php自定义函数及数组,php常用的数组排序函数实例

本文实例陈诉了PHP使用递归算法极度遍历数组。分享给大家供大家参谋,具体如下:

$fruits=array(
“d”=>”lemon”,
“a”=>”orange”,
“b”=>”banana”,
“c”=>”apple”);       //定义三个数组
arsort($fruits);       //对数组进行逆向排序
foreach($fruits as $key =>$val)    //循环输出排序后数组的键值对
{
php自定义函数及数组,php常用的数组排序函数实例。  echo “$key=$valn”;     //输出内容
}

怎样是数组?

**一、自定义函数

 代码如下

/*
arsort(array,sorttype)
arsort()
函数对数组实行逆向排序并保险索引关系。首要用于对那个单元顺序很主要的组合数组实行排序。

数组是一个数码的集纳,也便是二个器皿,能够将数据按一定的条条框框存到这些容器中。约等于旅舍,酒店内有过多房间,而房间依据一定的法规编号。

**自定义函数便是大家相濡以沫定义的函数,在PHP中自定义函数格式如下:

<?php

可选的第二个参数包含了增大的排序标记。

数组的整合:基本构造格局如下:

function funname(arg1, arg2, arg3……){

//Infiniti遍历数组

如果成功则赶回 true,不然重回 false。

$数组名 (键)= 值
数组名:是二个数组区别于另一个数组的章程,如同各种饭店都有多少个名字。
键(key):也改成指针、索引恐怕标志符。键表示某值在数组中贮存的岗位,相当于饭馆的门牌号,能够用分化方式命名。通过查询键可以找到呼应的值。
值(value):值相当于房间内部存款和储蓄器放的事物。

//TODO

$a1=array(“a”,”b”,”c”);//一维数组

*/

赋值创造数组

return values;

$a2=array(array(21, 3, 6),array(“a”,”b”,”c”));//二维数组

$fruits=array(
“d”=>”lemon”,
“a”=>”orange”,
“b”=>”banana”,
“c”=>”apple”);       //定义一个数组
asort($fruits);       //对数组实行排序
foreach($fruits as $key =>$val)    //循环输出排序后数组的键值对
{
  echo “$key=$valn”;     //输出内容
}

在php中,创制数组有变量赋值和调用函数三种艺术,这里先讲前面二个。

}

$a3=array(array(array(5, 55), 4, 444), 2, 7, 6, 8,array(“w”,”d”,array(3,
2,”a”),”s”));//多维不法则数组

/*
概念和用法
asort()
函数对数组实行排序并维持索引关系。首要用以对那叁个单元顺序很关键的组合数组进行排序。

利用变量赋值方法很简单,直接给多少个数组变量赋值就能够。

 代码如下

functionfun($a) {

可选的第二个参数富含了附加的排序标记。

实例:

 <?php 
    function fun($m, $n){ 
        if($m==0 || $n==0){ 
            return 0; 
        }else{ 
            $a=$m*$n; 
            return $a; 
        } 
    } 
     
    $p=2; 
    $h=3; 
    echo $p.”*”.$h.”=”.fun($p,$h); 
?>

  foreach($aas$val) {

如果成功则赶回 true,不然再次来到 false。

 代码如下

上面再举一个可变参数的函数

    if(is_array($val)) {//假使键值是数组,则进行函数递归调用

语法
asort(array,sorttype)

<?php
 $lang[]=”php”;
 $lang[]=”html”;
 $lang[]=”css”;
 echo “$lang[0] <br>”;
 echo “$lang[1] <br>”;
 echo “$lang[2] <br>”;
?>

 代码如下

      fun($val);

*/

多少个赋值语句产生的数组内容:

<?php 
/*
function fun($m, $n){
    if($m==0 || $n==0){
        return 0;
    }else{
        $a=$m*$n;
        return $a;
    }
}
 
$p=2;
$h=3;
echo $p.”*”.$h.”=”.fun($p,$h); */ 
 
 
function fun($m, $n=1, $x=2){ 
    $a=$m*$n*$x; 
    return $a; 

 
$p=2; 
echo fun($p).”<br>”;          // 2*1*2 = 4 
echo fun($p, 3).”<br>”;       // 2*3*2 = 12 
echo fun($p, 3, 3).”<br>”;    // 2*3*3 = 18 
?>

    }else{// 假设键值是数值,则开展输出

$fruits=array(
“d”=>”lemon”,
“a”=>”orange”,
“b”=>”banana”,
“c”=>”apple”);       //定义一个数组
krsort($fruits);       //对数组遵照键名进行逆向排序
foreach($fruits as $key =>$val)    //循环输出排序后数组的键值对
{
  echo “$key=$valn”;     //输出内容
}

0=>php

    
 再来看看自定义函数援引传递

      echo”$val<br />”;

/*
概念和用法
krsort() 函数将数组依据键逆向排序,为数组值保留原本的键。

1=>html

 代码如下

    }//end if

可选的第叁个参数包蕴附加的排序标记。

2=>css

<?php 
/*  
function fun($m, $n){
    if($m==0 || $n==0){
        return 0;
    }else{
        $a=$m*$n;
        return $a;
    }
}
 
$p=2;
$h=3;
echo $p.”*”.$h.”=”.fun($p,$h); 
*/ 
 
/*
function fun($m, $n=1, $x=2){
    $a=$m*$n*$x;
    return $a;
}
 
$p=2;
echo fun($p).”<br>”;          // 2*1*2 = 4
echo fun($p, 3).”<br>”;       // 2*3*2 = 12
echo fun($p, 3, 3).”<br>”;    // 2*3*3 = 18
*/ 
 
function fun(&$n){ 
    $n=$n*$n; 

$p=2; 
fun($p); 
echo $p; 
?> 

  }//end foreach

若成功,则赶回 true,不然再次回到 false。

创制数组

二、数组定义赋值

}//end fun

语法

除此而外上边介绍的赋值创立数组,还有调用函数的格局创设数组。

1、数组基本写作格式

//fun($a1);

krsort(array,sorttype)
*/
$fruits=array(
“d”=>”lemon”,
“a”=>”orange”,
“b”=>”banana”,
“c”=>”apple”);       //定义五个数组
ksort($fruits);       //对数组根据键名实行排序
foreach($fruits as $key =>$val)    //循环输出排序后数组的键值对
{
  echo “$key=$valn”;     //输出内容
}

php提供了array函数来穿件二个数组,基本构造格局如下:

简言之款式:array(值1, 值2, 值3, …….)

//fun($a2);

/*
ksort 数组按钮名排行

array (item1,item2… ,itemn)

array(“aa”, 12, true, 2.2, “test”, 50); //通过数组下标获得数据

fun($a3);

ksort() 函数根据键名对数组排序,为数组值保留原来的键。

/*
item表示数组中的成分值。array()函数创立数组时自动给成分值分配标记符,从0依次扩大
*/
实例:

一体化形式:array(键1=>值1, 键2=>值2, ……)

?>

可选的第二个参数包罗附加的排序标记。

 代码如下

array(“title”=>”aa”, “age”=>20);  //只好通过键名获得数据

输出:

若成功,则赶回 true,不然再次来到 false。

<?php
 $student=array(“Tom”,”Jacky”,”Rose”);
 echo $student[0] .”t”;
 echo $student[1] .”t”;
 echo $student[2];
?>

2、创立数组的点子

 代码如下

该值是 php教程 4.4.0 和 5.0.2
新加的。在 php 6 在此之前,使用了系统的区域安装,能够用 setlocale()
来退换。自 php 6 起,必得用 i18n_loc_set_default() 函数。

数组键名

 代码如下

5

越来越多详细内容请查看:
*/

1、键名分配

//第一种 
$arr1=array(11, 22, 33, “44”); 
//第二种 
$arr2=array(‘a’=>’11’, ‘b’=>’22’); 
//第三种 
$arr3[0]=’20’; 
$arr3[1]=’30’; 

55

//同期定义多少个数组

在用array()函数成立数组时,键名会自动分配到种种值。其它,大家也能够按自身的急需直接给成分分配键名。

三、数组操作

4

$a1=$a2=array(‘img0.png’,’img8.png’,’img10.png’);
sort($a1);        //对数组1举行排序
echo “standard sortingn”;
print_r($a1);       //输出符合规律的排序
natcasesort($a2);      //对数组进行自然排序法且不区分轻重缓急写排序
echo “nnatural order sorting (case-insensitive)n”;
print_r($a2); 

主题构造情势:

1、修改

444

/*
natcasesort() 函数用不区分轻重缓急写的本来顺序算法对给定数组中的成分排序。

array ( key => item )

$arr=array(11, 22, 33, 44);

2

natcasesort() 函数达成了”自然排序”,即数字从 1 到 9 的排序方法,字母从 a
到 z
的排序方法,短者优先,该函数不区分轻重缓急写。数组的目录与单元值保持关联。

实例1:

$arr[0]=55;  //数组变为$arr=array(55, 22, 33, 44);

7

假如成功,则该函数重临 true,否则再次来到 false。

 代码如下

2、删除

6

语法

 <?php
 $a=array(1 => “you”,2 =>”are “, 5 =>”how “);
 echo $a[5];
 echo $a[2];
 echo $a[1];
?>

$arr=array(11, 22, 33, 44);

8

natcasesort(array)
*/
$a1=$a2=array(‘img0.png’,’img8.png’,’img10.png’);
sort($a1);        //对数组1举办排序
echo “standard sortingn”;
print_r($a1);       //输出常常的排序
natsort($a2);       //对数组进行自然排序法排序
echo “nnatural order sortingn”;
print_r($a2);       //输出第三种排序的结果

2、用字符串作键名

unset($arr[0]);    //数组变为$arr=array(22, 33, 44);

w

/*
对数组进行自然排序法排序
*/

不唯有能够用整数作为键名,也得以选择字符串作为键名。使用字符串作为键名的数组成为字符串索引(string-indexed)数组。

3、使用

d

$fruits=array(“lemon”,”orange”,”banana”,”apple”);    //定义一个数组
rsort($fruits);           //对数组进行逆向排序
foreach($fruits as
$key=>$val)        //循环输出数组排序后的键值对
{
  echo “$key=$valn”;         //输出键值对
}

实例2:

$arr=array(11, 22, 33, 44);

3

 代码如下

echo $arr[0];

2

<?php
 $a=array(“php”=>”动态网页”,”html”=>”静态网页”,”css”=>”网页排版”);
 echo $a[“php”] .”<br>”;
 echo $a[“html”] .”<br>”;
 echo $a[“css”];
?>

$arr=array(‘a’=>11, ‘b’=>22, ‘c’=>33, ‘d’=>44);

a

3、键名的改换

echo $arr[‘b’]];

s

实例3:

4、遍历

 代码如下

$arr=array(‘a’=>11, ‘b’=>22, ‘c’=>33, ‘d’=>44);

<?php        
 $arr = array(“a” => “新浪”,   
   “b”=>”网易”,    
   “c” => “腾讯”, “雅虎”  
  );
  $arr[a] = “PHP汉语社区”;  
  $arr[‘e’] = “新浪”;   
  $arr[] = “百度”;    
 echo $arr[‘a’] .”<br>”;   
 echo $arr[‘b’] .”<br>”;   
 echo $arr[‘c’] .”<br>”;   
 echo $arr[‘e’] .”<br>”;   
 echo $arr[0] .”<br>”;    
 echo $arr[1] .”<br>”;    
?>

foreach($arr as $value){
//无键名

始建多维数组

echo $value.”<br>”;

在php程序编写制定时,一维数组有的时候不可能满足需要,那时就要用到多维数组。多维数组就是在一维数组的功底上再扩展二个或多个细下标,用法与一维数组差少之甚少同样,只是多维数据操作尤其复杂,可是作用越来越强有力。

}

以二维数组为例,就好像大房屋里面套有小屋子,表示方法为$a[0][0]。

foreach($arr as $id=>$value){  //输出键和值

实例:

echo $id.”__”.$value.”<br>”;

 代码如下

}

<?php
 $a[0][0]=1;
 $a[0][1]=2;
 $a[0][2]=3;
 $a[1][0]=4;
 $a[1][1]=5;
 $a[1][2]=6;
 for($i=0;$i<=1;$i++){
  for($j=0;$j<=2;$j++){
   echo “$a[$i][$j]=” .$a[$i][$j] .”<br>”; /*
“$”表示输出变量符号$ */
  }
 }
?>

四、二维数组

输出数组

$arr=array(array(“1″,”11″,”111”), array(“2″,”22″,”222”));

输出数组是指将数组的的装有因素数据显示在浏览器上,php怎么输出数组?常用的php输出数组函数有var_dump()和print_r()函数。

echo $arr[1][2];

1、var_dump函数递归张开数组成分,显示数组各因素的体系、键名和成分值。

五、数组函数

实例1:

(1)array_change_key_case(array, case)

 代码如下

array:必需,数组。

<?php
 $a=array(0,5,array(“php”,”html”,”css”)); /* 创造一个嵌套的数组 */
 var_dump($a);
?>

case:可选,CASE_LOWE卡宴(暗许值,小写字母重临数组的键),CASE_UPPE奔驰G级(大写字母重返数组的键)

2、print_r函数值展现数组成分的键名和成分值。

效果与利益:将数组的兼具的 KEY 都转移为大写或小写。

实例2:

 代码如下

 代码如下

<?php 
$a=array(“a”=>”Cat”,”b”=>”Dog”,”c”=>”Horse”); 
print_r(array_change_key_case($a,CASE_UPPER)); 
?>

<?php
 $b=array(1,2,3);
 print_r($b);
?>

结果:Array ( [A] => Cat [B] => Dog [C] => Horse )

测验数组

(2)array_chunk(array,size,preserve_key)

不常大家不晓得有些变量是或不是数组,能够用is_array()函数来测量检验决断。

array:必需。

主干构造格局:

size:必得,规定每一个新数组包蕴多少成分。

is_array ( 变 量 )

preserve_key:可选,true(保留键名),false(新索引)

检查实验变量是还是不是数组,纵然是则赶回true,不然重临false。

功用:把二个数组分成新的数组块。

实例:

 代码如下

 代码如下

<?php 
//array_chunk(array,size,preserve_key) 
 
$a1=array(“a”=>”Cat”,”b”=>”Dog”,”c”=>”Horse”,”d”=>”Cow”); 
print_r(array_chunk($a1,2)); 
 
$a2=array(“a”=>”Cat”,”b”=>”Dog”,”c”=>”Horse”,”d”=>”Cow”); 
print_r(array_chunk($a2,2,true)); 
美高梅开户网址,?>  

<?php
 $a=”apple iphone”;
 if(is_array($a)){
   var_dump($a);
  }
 else echo “不是数组”;
?>

结果:

foreach遍历数组

Array ( [0] => Array ( [0] => Cat [1] => Dog ) [1]
=> Array ( [0] => Horse [1] => Cow ) )
Array ( [0] => Array ( [a] => Cat [b] => Dog ) [1]
=> Array ( [c] => Horse [d] => Cow ) )

大家在应用数组时,日常要遍历数组并得到种种键大概成分值,php提供了一些专程遍历数组的函数。这里先介绍foreach遍历数组函数的用法。

…….

组织方式:

像这么的函数比相当多,能够在用的时候再查,列表如下(php代表第一次出现版本)

 代码如下

 
函数     描述     PHP
array()     创造数组。     3
array_change_key_case()     重返其键均为大写或小写的数组。     4
array_chunk()     把叁个数组分割为新的数组块。     4
array_combine()     通过集结七个数组来创制贰个新数组。     5
array_count_values()     用于总括数组中兼有值出现的次数。     4
array_diff()     重返七个数组的差集数组。     4
array_diff_assoc()     比较键名和键值,并赶回八个数组的差集数组。    
4
array_diff_key()     相比键名,并回到多少个数组的差集数组。     5
array_diff_uassoc()    
通过顾客提供的回调函数做索引检查来总计数组的差集。     5
array_diff_ukey()     用回调函数对键名相比划算数组的差集。     5
array_fill()     用给定的值填充数组。     4
array_filter()     用回调函数过滤数组中的成分。     4
array_flip()     沟通数组中的键和值。     4
array_intersect()     计算数组的插花。     4
array_intersect_assoc()     比较键名和键值,并再次来到七个数组的交集数组。
    4
array_intersect_key()     使用键名比较划算数组的和弄。     5
array_intersect_uassoc()    
带索引检查总括数组的混合,用回调函数相比索引。     5
array_intersect_ukey()     用回调函数比较键名来测算数组的搅拌。    
5
array_key_exists()     检查给定的键名或索引是还是不是留存于数组中。     4
array_keys()     重返数组中具有的键名。     4
array_map()     将回调函数成效到给定数组的单元上。     4
array_merge()     把三个或多个数组合併为叁个数组。     4
array_merge_recursive()     递归地联合二个或三个数组。     4
array_multisort()     对多少个数组或多维数组进行排序。     4
array_pad()     用值将数组填补到钦定长度。     4
array_pop()     将数组最终三个单元弹出(出栈)。     4
array_product()     总计数组中全体值的乘积。     5
array_push()     将三个或八个单元(成分)压入数组的最后(入栈)。    
4
array_rand()     从数组中专擅行选购出贰个或四个因素,并重回。     4
array_reduce()     用回调函数迭代地将数组简化为单纯的值。     4
array_reverse()     将原数组中的成分顺序反过来,创立新的数组并回到。    
4
array_search()     在数组中搜寻给定的值,要是成功则赶回相应的键名。    
4
array_shift()     删除数组中的第三个要素,并赶回被删除成分的值。    
4
array_slice()     在数组中依据条件抽出一段值,并赶回。     4
array_splice()     把数组中的一有的去掉并用另外值取代。     4
array_sum()     总结数组中全体值的和。     4
array_udiff()     用回调函数相比数据来计量数组的差集。     5
array_udiff_assoc()     带索引检查计算数组的差集,用回调函数比较数据。
    5
array_udiff_uassoc()    
带索引检查总结数组的差集,用回调函数相比较数据和目录。     5
array_uintersect()     总计数组的插花,用回调函数比较数据。     5
array_uintersect_assoc()    
带索引检查计算数组的插花,用回调函数相比数据。     5
array_uintersect_uassoc()    
带索引检查总结数组的插花,用回调函数比较数据和目录。     5
array_unique()     删除数组中重新的值。     4
array_unshift()     在数组起来插入四个或多少个要素。     4
array_values()     再次来到数组中保有的值。     4
array_walk()     对数组中的各类成员利用客商函数。     3
array_walk_recursive()     对数组中的每一种成员递归地运用客商函数。    
5
arsort()     对数组进行逆向排序并维持索引关系。     3
asort()     对数组举行排序并保证索引关系。     3
compact()     创建二个数组,包罗变量名和它们的值。     4
count()     总结数组中的成分数目或对象中的属性个数。     3
current()     重回数组中的当前元素。     3
each()     再次来到数组中当前的键/值对并将数组指针向前移动一步。     3
end()     将数组的里边指针指向最终叁个要素。     3
extract()     从数组大校变量导入到当前的符号表。     3
in_array()     检查数组中是否留存钦定的值。     4
key()     从涉嫌数组中赢得键名。     3
krsort()     对数组依照键名逆向排序。     3
ksort()     对数组遵照键名排序。     3
list()     把数组中的值赋给部分变量。     3
natcasesort()     用“自然排序”算法对数组进行不区分轻重缓急写字母的排序。    
4
natsort()     用“自然排序”算法对数组排序。     4
next()     将数组中的内部指针向前挪动一人。     3
pos()     current() 的别名。     3
prev()     将数组的在这之中指针倒回一位。     3
range()     创立二个含有内定范围的元素的数组。     3
reset()     将数组的中间指针指向第一个因素。     3
rsort()     对数组逆向排序。     3
shuffle()     把数组中的成分按专断顺序重新排列。     3
sizeof()     count() 的别名。     3
sort()     对数组排序。     3
uasort()    
使用客商自定义的可比函数对数组中的值举行排序并保证索引关联。     3
uksort()     使用顾客自定义的可比函数对数组中的键名举行排序。     3
usort()     使用客商自定义的可比函数对数组中的值进行排序。     3

 foreach ( array_expression as $value ) statement
/* array_expression是要遍历的数组
   as成效是将数组的值赋给$value
   statement是延续语句
 */
实例1:

 <?php
 $color=array(‘white’ => ‘白色’ ,
       ‘black’ => ‘黑色’ ,
       ‘red’ => ‘红色’ ,
       ‘green’ => ‘绿色’,
       ‘yellow’ => ‘黄色’);
 foreach( $color as $c) echo $c .”<br>”;   
?>

因而foreach不仅能够取得成分的值也得以获得键名,结构情势:

  foreach ( array_expression as $key => $value ) statement

将上述实例中第7行的代码:

 

 代码如下

 foreach( $color as $c) echo $c .”<br>”;
改为:

 foreach( $color as $key => $c) echo $key.$c .”<br>”;

查找数组成分值

php获取数组键名能够用array_search()来促成,结构情势如下:

array_search( $needle,$haystack )
/* 参数$needle代表要物色的值 */
/* $haystack表示查找对象 */
array_search()函数再次回到的是键名,实际不是布尔值,找不到时回来false。找到的要素要是正好是第贰个成分,则重回0。而php会自动转化成false,所以要求采纳”===”判定重返值。(“===”推断是或不是全等,详:php关系运算符)

实例:

 代码如下

<?php
 $s=array(“a”,”b”,”c”,”d”,”e”,”f”);
 $i=array_search(“a”,$s); /* 查找数组是还是不是有字符”a” */
 if($i===false)  /* 决断查找结果 */
  echo “在数组s中找不到字符’a'”;
 else echo “输出数组$s的键名:” .$i; /* 输出键名 */ 
?>

计量数组成分个数

数组也像变量同样能够扩充览演出算,举个例子需求php计算数组成分个数时,大家得以应用count()函数来计量数组申月素的个数。

布局方式:

 代码如下

 count ( $var,$mode )
/* $var参数$var常常是多个数组,函数重回var中的单元数目 */
/* mode是可选参数 */
实例:

<?php
 $a=array(“peple”,”man”,”women”);
 $b=count($a); /* 总结数组成分个数 */
 echo $b;
?>

数组排序

php提供了一类别的数组排序函数,我们能够依附须求对数组举行排序。数组的排序首要有三种办法:

按钮值排序

即按标记符ASCⅡ码值的分寸排列顺序。

ksort(): 依照数组标志符顺序排列
krsort(): 遵照数组标志符逆序排
实例1:

 代码如下

<?php
 $languages=array(
  ‘c’=>’php’,
  ‘d’=>’asp’,
  ‘a’=>’jsp’,
  ‘b’=>’java’
 );
 krsort($languages);
 foreach($languages as $key=>$val){
  echo “$key = $val”.'<br>’;
 };
?>

按成分值排序

 asort(): 依据由小到大的相继对数组排序;
rsort(): 遵照由大到小的依次对数组逆序排序。
将实例1的8-11行代码改为:

 

 代码如下

  asort($languages);
 print_r($languages);
 echo “<br>”;
 rsort($languages);
 print_r($languages);

删除原有键名排序

 sort(): 依据由小到大的次第对数组排序;
rsort(): 依照由大到小的逐个对数组逆序排序。
将实例2的8-11行代码改为:

 

 代码如下

sort($languages);
 foreach($languages as $key=>$val){
  echo “languages[$key] = $val”.'<br>’;
 };

 

数组运算符

合併数组总计实例:

 代码如下

<?php
 $a=array(
   ‘a’=>’php’,
   ‘b’=>’html’,
   ‘c’=>’css’
 );
 $b=array(
   ‘a’=>’asp’,
   ‘b’=>’jsp’
 );
 $c=$a+$b; /* 合併数组 */
 var_dump($c);
 echo “<br>”;
 $c=$b+$a; /* 沟通顺序合并数组 */
 var_dump($c); 
?>

数组的可比实例:

 代码如下

<?php
 $a=array(‘php’,’asp’);
 $b=array(1=>’asp’,0=>’php’);
 var_dump($a==$b);
 var_dump($a===$b);
?>

数组运算符
例子 名称 结果
$a + $b 联合 $a 和 $b 的联合。
$a == $b 相等 如果 $a 和 $b 具有相同的键/值对则为 TRUE
$a === $b 全等 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE
$a <> $b 不等 如果 $a 不等于 $b 则为 TRUE
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图