php基础知识,php中的常用数组函数

By admin in 4858.com on 2019年2月12日
1 $arr1 = array(1, 2, 3, 4, 'color'=>'red');
2 $arr2 = array('a', 'b', 'c', 'color'=>'blue');
3 print_r(array_merge($arr1, $arr2));//同名索引的值会覆盖
4 print_r(array_merge_recursive($arr1, $arr2));//相同的键名 不会覆盖,如果是单个元素会在转为一个一维数组
1 $arr1 = array(1, 2, 3, 4, 'color'=>'red');
2 $arr2 = array('a', 'b', 'c', 'color'=>'blue');
3 print_r(array_merge($arr1, $arr2));//同名索引的值会覆盖
4 print_r(array_merge_recursive($arr1, $arr2));//相同的键名 不会覆盖,如果是单个元素会在转为一个一维数组

集合数组有多少个函数:

一、排序

七个函数成效都是联合数组。参数可以是1到n个数组。(呃,不知情参数是1个数组的时候吗用的。哪个人知道告诉本身。)

几个函数效用都是统一数组。参数能够是1到n个数组。(呃,不知道参数是1个数组的时候什么用的。哪个人知道告诉我。)

1.array_combine()

  1、sort
从压低到最高排序,删除原有的键名,赋予新的键名【字母比数字高】



辅导多少个参数数组,参数数组一的值作新数组的键,参数数组二的值作新数组的值。很简短。

  2、rsort
逆向排序(最高到最低),删除原有的键名,赋予新的键名【字母比数字高】

 

 

例子:

    3、asort — 正向排序,保持索引关系

输出结果:

出口结果:

复制代码 代码如下:

    4、arsort –逆向排序,保持索引关系
    5、ksort –依照键名排序
    6、krsort –根据键名逆向排序        

第3行:

第3行:

<?php
$a = array(‘green’, ‘red’, ‘yellow’);
$b = array(‘avocado’, ‘apple’, ‘banana’);
$c = array_combine($a, $b);

     (1)纯英文:$fruits = array(“d” => “lemon”, “a” =>
“orange”, “b” => “banana”, “c” => “apple”);

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[color] => blue //这一行有分别注意哦
[4] => a
[5] => b
[6] => c
)

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[color] => blue //这一行有分别注意哦
[4] => a
[5] => b
[6] => c
)

print_r($c);
?>

            asort($fruits);//=>  Array ( [c] => apple [b]
=> banana [d] => lemon [a] => orange )    

第4行:

第4行:

上例将出口:

     (2)纯数字:$fruits = array(“d” => “341”, “a” => “524”, “b”
=> “75”, “c” => “657”);

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[color] => Array //注意那么些地方有分别
(
[0] => red
[1] => blue
)

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[color] => Array //注意这一个地方有分别
(
[0] => red
[1] => blue
)

复制代码 代码如下:

                       asort($fruits);//=> Array ( [b] => 75
[d] => 341 [a] => 524 [c] => 657 )

[4] => a
[5] => b
[6] => c
)

[4] => a
[5] => b
[6] => c
)

Array
(
[green] => avocado
[red] => apple
[yellow] => banana
)

      (3)混合: $fruits = array(“d” => “daf”, “a” => “fasd”,
“b” => “234”, “c” => “657”);

 

 

2.array_merge()

                   asort($fruits);//=> Array ( [b] => 234 [c]
=> 657 [d] => daf [a] => fasd ) 先数字后字母    

带走三个参数数组,简单的将数组二充实到数组一的末尾构成新数组。

    7、natsort –用“自然排序”算法排序 

例子:

    8、natcasesort –用“自然排序”算法举行排序,不区分轻重缓急写
   php基础知识,php中的常用数组函数。 9、usort
使用用户自定义的可比函数对数组中的值举办排序,删除原有的键名
    10、uasort
–使用用户自定义的比较函数对数组中的值进行排序并维持索引关联
    11、uksort –使用用户自定义的相比较函数对数组中的键名举行排序
    
    12、array_multisort
对五个数组或多维数组开展排序,关联键名保持不变,但数字键名会被重复索引。第四个参数必须是一个数组  
 
    13、array_reverse —  再次来到一个单元顺序相反的数组

复制代码 代码如下:

        $input  = array(“php”,array(“green”, “red”));
        $result = array_reverse($input);//Array([0] => Array([0]
=> green,[1] => red),[1] => php)
        $res = array_reverse($input, TRUE);//true代表保留原来的键名

<?php
$array1 = array(“color” => “red”, 2, 4);
$array2 = array(“a”, “b”, “color” => “green”, “shape” =>
“trapezoid”, 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

二、key和value
    1、key –– 再次来到数组中当前单元的键名。    
    2、array_key_exists
检查给定的键名或索引是或不是留存于数组中,也可用于对象
        $search_array = array(‘first’ => 1, ‘second’ => 4);
        array_key_exists(‘first’, $search_array));//存在时回来 TRUE 
      
    3、array_keys — 重临数组中兼有的键名
        $array = array(0 => 100, “color” => “red”);
        print_r(array_keys($array));//Array([0] => 0,[1] =>
color)    
    4、array_values — 重回数组中保有的值
        $array = array(“size” => “XL”, “color” => “gold”);
        print_r(array_values($array));//Array([0] => XL [1]
=> gold)     
    5、array_count_values — 计算数组中具有的值出现的次数
        $array = array(1, “hello”, 1, “world”, “hello”);
        print_r(array_count_values ($array));//Array([1]
=>2,[hello] =>2,[world] => 1)
    6、array_flip
沟通数组中的键和值,假若同一个值出现反复,只取最终一个,其余的都遗落。
        $trans = array(“a” => 1, “b” => 1, “c” => 2);
        $trans = array_flip($trans);//Array([1] => b,[2] =>
c) 
    7、array_search — 
在数组中追寻给定的值,若是成功则赶回相应的键名
        $array = array(0 => ‘blue’, 1 => ‘red’, 2 => ‘green’, 3
=> ‘red’);
        $key = array_search(‘green’, $array); // $key = 2;
        $key = array_search(‘red’, $array);   // $key = 1;    
    8、array_sum —  计算数组中所有值的和
        $a = array(2, 4, 6, 8);
        echo “sum(a) = “.array_sum($a);//20        
       
三、交集和差集
    1、array_diff — 统计数组的差集,重返数组,键名不用于比较
        $array1 = array(“a” => “green”, “red”, “blue”, “red”);
        $array2 = array(“b” => “green”, “yellow”, “red”);
        $result = array_diff_assoc($array1, $array2);//Array([1]
=> blue)          
    2、array_diff_assoc
带索引检查总括数组的差集,重临数组,键名也用于比较,可三个数组比较
        $array1 = array (“a” => “green”, “b” => “brown”, “c” =>
“blue”, “red”);
        $array2 = array (“a” => “green”, “yellow”, “red”);
        $result = array_diff_assoc($array1, $array2);//Array([b]
=>brown,[c] =>blue,[0] =>red)          
    3、array_diff_uassoc
用用户提供的回调函数做索引检查来计量数组的差集
        function func($a, $b){if ($a === $b) {return 0;}}
        $array1 = array(“a” => “green”, “b” => “brown”, “c” =>
“blue”, “red”);
        $array2 = array(“a” => “green”, “yellow”, “red”);
        $result = array_diff_uassoc($array1, $array2,
“func”);//Array([b] =>brown,[c] =>blue,[0] =>red)       
  
    4、array_intersect — 计算数组的插花,键名不用于相比
        $array1 = array(“a” => “green”, “red”, “blue”);
        $array2 = array(“b” => “green”, “yellow”, “red”);
        $result = array_intersect($array1, $array2);//Array([a]
=>green,[0] =>red)         
    5、array_intersect_assoc
带索引检查统计数组的混杂,键名也用于比较
        $array1 = array(“a” => “green”, “b” => “brown”, “c” =>
“blue”, “red”);
        $array2 = array(“a” => “green”, “yellow”, “red”);
        $result_array = array_intersect_assoc($array1,
$array2);//Array([a] => green)

上例将出口:

四、指针操作
    1、current — 再次回到数组中的当前单元
    2、reset —  将数组的中间指针指向首个单元
    3、end —  将数组的其中指针指向最终一个单元
    4、next —  将数组中的内部指针向前挪动一位
    5、prev — 将数组的中间指针倒回一位
        $transport = array(‘foot’, ‘bike’, ‘car’, ‘plane’);
        $mode = current($transport); // $mode = ‘foot’;
        $mode = next($transport);    // $mode = ‘bike’;
        $mode = next($transport);    // $mode = ‘car’;
        $mode = prev($transport);    // $mode = ‘bike’;
    6、each —  再次来到数组中当前的键/值对并将数组指针向前移动一步
        重回为八个单元的数组,键名为 0,1,key 和 value。单元 0 和 key
包涵有数组单元的键名,1 和 value 包蕴有数据。
        $foo = array(“bob”, “fred”, “jussi”, “jouni”, “egon”,
“marliese”);
        $bar = each($foo);//Array{[1] => bob[value] => bob
[0] => 0 [key] => 0}

复制代码 代码如下:

五、合并
    1、array_merge_recursive
将一个或七个数组合并,即使数组中有平等键名,后一个值将不会覆盖原来的值,而是附加到后边。

Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)

          $ar1 = array(“color” => array(“favorite” => “red”),
5);
          $ar2 = array(10, “color” => array(“favorite” =>
“green”, “blue”));
          $result = array_merge_recursive($ar1, $ar2);
              //Array([color] => Array([favorite] =>
Array([0] =>red,[1] =>green),[0] => blue),[0] =>
5,[1] => 10)     
    2、array_merge
合并一个或多个数组,如果字符串键名前边的将覆盖前一个,但数字键名相同,前面的值将不会覆盖原来的值,而是附加到背后。
          $array1 = array(“color” => “red”, 2, 4);
          $array2 = array(“a”, “b”, “color” => “green”, “shape”
=> “trapezoid”, 4);
          $result = array_merge($array1, $array2);
              //Array([color] =>green,[0] =>2,[1]
=>4,[2] =>a,[3] =>b,[shape] =>trapezoid,[4]
=> 4)                 
    3、array_combine — 
成立一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
          $a = array(‘green’, ‘red’, ‘yellow’);
          $b = array(‘avocado’, ‘apple’, ‘banana’);
          $c = array_combine($a,
$b);//Array([green]=>avocado,[red]=> apple,[yellow]
=>banana)
    
六、取值
    1、array_slice(array,offset[,length[,keys]])
从数组中取出一段
       
   offset非负,从数组中的此偏移量初叶,为负,则从数组中远距离末端这么远的地点初步
       
   length正,数组校官有length个因素,为负将终止在相距数组末端这么远的地点。省略则从offset起先一贯到数组的背后。

3.array_merge_recursive()

           keys 设为 TRUE 保留键名,否则重置键名
    2、array_rand(input,[num_req])
–从数组中随意取出一个或八个单元,num_req指明要取多少个,默认为 1。
          $input = array(“Neo”, “Morpheus”, “Trinity”, “Cypher”,
“Tank”);
          $rand_keys = array_rand($input, 2);

与地点函数雷同,唯一的分别是在大增时意识要添加的键已存在时,array_merge()的处理形式是覆盖前边的键值,array_merge_recursive()的处理形式是重构子数组,将再次的键的值组成一个新的数值数组。

七、去值和顶替
    1、array_splice (array,offset[,length[,replacement]])
把数组中的一有些去掉并用任何值取代 ,数字键名不被保存

例子:

 
     offset:为正,从数组中该值指定的偏移量初叶移除,为负,则从末尾倒数该值指定的偏移量发轫移除
          length:省略则移除数组中从 offset
到结尾的有着片段。为正则移除这么多单元。为负则移除从offset到数组末尾尾数length 截止中间所有的单元
              如若给出了 replacement
数组,则被移除的单元被此数组中的单元替代
          $input = array(“red”, “green”, “blue”, “yellow”);
          array_splice($input, 2);// $input is now array(“red”,
“green”)
        
          $input = array(“red”, “green”, “blue”, “yellow”);
          array_splice($input, 1, -1);// $input is now array(“red”,
“yellow”)
        
          $input = array(“red”, “green”, “blue”, “yellow”);
          array_splice($input, 1, count($input), “orange”);// $input
is now array(“red”, “orange”)
          
          $input = array(“red”, “green”, “blue”, “yellow”);
          array_splice($input, -1, 1, array(“black”, “maroon”));//
$input is now array(“red”, “green”,”blue”, “black”, “maroon”)
        
          $input = array(“red”, “green”, “blue”, “yellow”);
          array_splice($input, 3, 0, “purple”);// $input is now
array(“red”, “green”,”blue”, “purple”, “yellow”);
      2、array_unique — 移除数组中再一次的值,    
           $input = array(“a” => “green”, “red”, “b” => “green”,
“blue”, “red”);
          $result = array_unique($input);//Array([a] =>
green,0] => red,[1] => blue)
        
          $input = array(4, “4”, “3”, 4, 3, “3”);
          $result = array_unique($input);//array(2) { [0]=>
int(4) [2]=> string(1) “3” }
    3、array_pop
将数组最后一个单元弹出(出栈),数组的长度减一,使用本函数后会重置数组指针。
          $stack = array(“orange”, “banana”, “apple”, “raspberry”);
          $fruit = array_pop($stack);
          print_r($stack);//Array([0] => orange,[1] =>
banana,[2] => apple)
          print_r($fruit);//Array([0] => raspberry)    
    4、array_shift — 
将数组开端的单元移出数组,数字键主力改为从零开首计数,文字键新秀不变
          $stack = array(“orange”, “banana”, “apple”, “raspberry”);
          $fruit = array_pop($stack);
          print_r($stack);//Array([0] => banana,[1] =>
apple,[2] => raspberry)
          print_r($fruit);//Array([0] => orange)
  

复制代码 代码如下:

八、插入和填充
    1、array_pad(input,pad_size,pad_value ) — 
用值将数组填补到指定长度
        如果 pad_size
为正,则数组被填补到右手,若是为负则从左侧起首补充。
        $input = array(12, 10, 9);
        $result = array_pad($input, 5, 0);// result is array(12, 10, 9,
0, 0)
        $result = array_pad($input, -7, -1);// result is array(-1, -1,
-1, -1, 12, 10, 9)
        $result = array_pad($input, 2, “noop”);// not padded    
    2、array_push —  将一个或七个单元压入数组的末段(入栈)
        $stack = array(“orange”, “banana”);
        array_push($stack, “apple”);//Array([0] => orange,[1]
=> banana,[2] => apple)
    **3、array_unshift — 
在数组起来插入一个或多少个单元,数值键名重新计数,文字键名保持不变。
        $queue = array(“orange”, “banana”);
        array_unshift($queue, “apple”);//Array([0] => apple[1]
=> raspberry[2] => orange[3] => banana)     
  
 4、array_fill(start_index,num,value )-**- 用给定的值填充数组
        num: 填充的条条框框  start_index:指定键名的发轫 value:填充的值
        $a = array_fill(5, 4,
‘banana’);//Array([5]=>banana,[6]=>banana,[7]=>banana,[8]=>banana)

<?php
$ar1 = array(“color” => array(“favorite” => “red”), 5);
$ar2 = array(10, “color” => array(“favorite” => “green”,
“blue”));
$result = array_merge_recursive($ar1, $ar2);
?>

九、回调函数
    1、array_filter —  用回调函数过滤数组中的单元
        function odd($var){return($var % 2 == 1);}
        function even($var){return($var % 2 == 0);}
        $array1 = array(“a”=>1, “b”=>2, “c”=>3, “d”=>4,
“e”=>5);
        $array2 = array(6, 7, 8, 9, 10, 11, 12);
        print_r(array_filter($array1, “odd”));  //Array([a]
=>1,[c] =>3,[e] => 5)
        print_r(array_filter($array2, “even”)); //Array([0]
=>6,[2] =>8,[4] =>10,[6] =>12)        
    2、array_map —  将回调函数功用到给定数组的单元上
        function cube($n){return($n * $n * $n);}
        $a = array(1, 2, 3, 4, 5);
        $b = array_map(“cube”, $a);//Array([0] =>1,[1]
=>8,[2] =>27,[3] =>64,[4] =>125)    
    3、array_reduce — 用回调函数迭代地将数组简化为单纯的值
        function rsum($v, $w){$v += $w;    return $v;}    
        function rmul($v, $w){$v *= $w;return $v;}    
        $a = array(1, 2, 3, 4, 5);
        $x = array();
        $b = array_reduce($a, “rsum”); //15=1+2=3+4+5
        $c = array_reduce($a, “rmul”, 10);//1200(=
10*1*2*3*4*5)
        $d = array_reduce($x, “rsum”, 1);//1

上例将出口 $result:

十、其他
    1、array_chunk — 将一个数组分割成四个
        $input_array = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’);
        print_r(array_chunk($input_array, 2)); //暗中同意值是
FALSE,各种结果数组将用从零初步的新数字索引
        print_r(array_chunk($input_array, 2,
true));//TRUE代表数组中原本的键名    
    2、shuffle — 打乱(随机排列单元的各个)一个数组。
删除原有的键名,赋予新的键名    
    3、in_array — 检查数组中是或不是存在某个值,区分轻重缓急写    
    4、数组和json互换
        json_encode()–将PHP数组转换成Json。
        json_decode()–将Json转换成PHP数组   

复制代码 代码如下:

 

Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)


[0] => blue
)

[0] => 5
[1] => 10
)

拆分数组有五个函数:

1.array_slice()

带走多少个参数,参数一为对象数组,参数二为offset,参数三为length。功效为,从目的数组中取出从offset初始长度为length的子数组。

即便offset为正数,则始于地点从数组先导查offset处,假设offset为负数初始地点从距数组末尾查offset处。假诺length为正数,则肯定取出的子数组成分个数为length,如若length为负数,则子数组从offset开端到距数组起来count(目的数组)-|length|处截至。特殊地,若是length为空,则停止位置在数组最后。

例子:

复制代码 代码如下:

<?php
$input = array(“a”, “b”, “c”, “d”, “e”);

$output = array_slice($input, 2); // returns “c”, “d”, and “e”
$output = array_slice($input, -2, 1); // returns “d”
$output = array_slice($input, 0, 3); // returns “a”, “b”, and “c”

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>

上例将出口:

复制代码 代码如下:

Array
(
[0] => c
[1] => d
)
Array
(
[2] => c
[3] => d
)

2.array_splice()

带走三个参数,同上,效能是剔除从offset开首长度为length的子数组。

例子:

复制代码 代码如下:

<?php
$input = array(“red”, “green”, “blue”, “yellow”);
array_splice($input, 2);
// $input is now array(“red”, “green”)

$input = array(“red”, “green”, “blue”, “yellow”);
array_splice($input, 1, -1);
// $input is now array(“red”, “yellow”)

$input = array(“red”, “green”, “blue”, “yellow”);
array_splice($input, 1, count($input), “orange”);
// $input is now array(“red”, “orange”)

$input = array(“red”, “green”, “blue”, “yellow”);
array_splice($input, -1, 1, array(“black”, “maroon”));
// $input is now array(“red”, “green”,
// “blue”, “black”, “maroon”)

$input = array(“red”, “green”, “blue”, “yellow”);
array_splice($input, 3, 0, “purple”);
// $input is now array(“red”, “green”,
// “blue”, “purple”, “yellow”);
?>

分别取值函数有三个:

1.array_intersect()
带走参数不定,均为数组,重返所有数组中集体成分的值组成的数组,数组的键由所在第三个数组的键给出。

例子:

复制代码 代码如下:

<?php
$array1 = array(“a” => “green”, “red”, “blue”);
$array2 = array(“b” => “green”, “yellow”, “red”);
$result = array_intersect($array1, $array2);
?>

上例将出口:

复制代码 代码如下:

Array
(
[a] => green
[0] => red
)

2.array_intersect_assoc()

在前一个函数的底蕴上,重临所有数组中键、值均一致的键值对。

例子:

复制代码 代码如下:

<?php
$array1 = array(“a” => “green”, “b” => “brown”, “c” => “blue”,
“red”);
$array2 = array(“a” => “green”, “yellow”, “red”);
$result_array = array_intersect_assoc($array1, $array2);
?>

上例将出口:

复制代码 代码如下:

Array
(
[a] => green
)

3.array_diff()

指引八个数组,重回首个数组中有些而背后的数组中从未的所有的值组成的新数组,对应键取自首个数组。

例子:

复制代码 代码如下:

<?php
$array1 = array(“a” => “green”, “red”, “blue”, “red”);
$array2 = array(“b” => “green”, “yellow”, “red”);
$result = array_diff($array1, $array2);

print_r($result);
?>

上例将出口:

复制代码 代码如下:

Array
(
[1] => blue
)

4.array_diff_assoc()

在前一个函数的功底上,不仅必要匹配值还要匹配键。

例子:

复制代码 代码如下:

4858.com,<?php
$array1 = array (“a” => “green”, “b” => “brown”, “c” => “blue”,
“red”);
$array2 = array (“a” => “green”, “yellow”, “red”);
$result = array_diff_assoc($array1, $array2);
?>

上例将出口:

复制代码 代码如下:

Array
(
[b] => brown
[c] => blue
[0] => red
)

您大概感兴趣的文章:

  • php数组函数连串之array_unique() –
    去除数组中再一次的成分值
  • php数组函数种类之array_keys() –
    获取数组键名
  • php使用array_rand()函数从数组中随机挑选一个或三个因素
  • php数组函数系列之array_key_exists() –
    查找数组键名是不是留存
  • php数组查找函数in_array()、array_search()、array_key_exists()使用实例
  • php中删除数组的率先个要素和尾声一个要素的函数
  • php中使用array_filter()函数过滤空数组的落实代码
  • php
    数组操作(增加,删除,查询,排序)等函数表达
  • PHP数组常用函数实例小结

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有