PHP学习笔记三(数组API)

Posted 昵称正在加载中。。。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP学习笔记三(数组API)相关的知识,希望对你有一定的参考价值。

数组

分类
  • 数值数组 : 带有数字 ID 键的数组

    $word = array("I","LOVE","php");
    echo $word[0].$word[1].$word[2];
    
  • 关联数组: 带有指定的键的数组,每个键关联一个值

    $age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    echo "Peter is " . $age['Peter'] . " years old.";
    
  • 多维数组: 包含一个或多个数组的数组

    $person = array
    (
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
    );
    
  • 遍历

    // 数值数组
    for($x = 0; $x < count($word); $x++) 
        echo: $word[$x]."<br>";
    
    
    // 关联数组
    foreach($age as $item => $item_val) 
        echo "key:" .$item. ",value:" .$item_val;
    
    
    // 多维数组
    echo $person[0][0].": Ordered: ".$person[0][1].". Sold: ".$person[0][2]."<br>";
    echo $person[1][0].": Ordered: ".$person[1][1].". Sold: ".$person[1][2]."<br>";
    echo $person[2][0].": Ordered: ".$person[2][1].". Sold: ".$person[2][2]."<br>";
    
常用API
  • array_chunk(): 把一个数组分割为新的数组块

    $age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    print_r(array_chunk($age,2, true));
    /*
      2: 每个数组存放2个元素
      true:保留原始数组中的键名, 反之:每个新数组块使用从零开始的索引(默认)
    */
    
  • array_column(): 返回输入数组中某个单一列的值

    $a = array(
      array(
        'id' => 5698,
        'first_name' => 'Peter',
        'last_name' => 'Griffin',
      ),
      array(
        'id' => 4767,
        'first_name' => 'Ben',
        'last_name' => 'Smith',
      ),
      array(
        'id' => 3809,
        'first_name' => 'Joe',
        'last_name' => 'Doe',
      )
    );
    $last_names = array_column($a, 'last_name', 'id');
    print_r($last_names);
    /*
    Array
    (
      [5698] => Griffin
      [4767] => Smith
      [3809] => Doe
    )
    */
    
  • array_count_values() :用于统计数组中所有值出现的次数

$a = array("A","Cat","Dog","A","Dog");
print_r(array_count_values($a));
/*
Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )
*/
差集API
  • array_diff(): 比较数组,返回两个数组的差集(只比较键值)

    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
    $a2=array("e"=>"red","f"=>"black","g"=>"purple");
    $a3=array("a"=>"red","b"=>"black","h"=>"yellow");
    $result=array_diff($a1,$a2,$a3);
    print_r($result);
    /*
    Array ( [b] => green [c] => blue )
    */
    
  • array_udiff() 比较数组,返回两个数组的差集(只比较键值,使用一个用户自定义的键名比较函数)

  • array_diff_key(): 比较数组,返回两个数组的差集(只比较键名)

    $a1=array("a"=>"red","b"=>"green","c"=>"blue");
    $a2=array("c"=>"yellow","d"=>"black","e"=>"brown");
    $a3=array("f"=>"green","c"=>"purple","g"=>"red");
     
    $result= array_diff_key($a1,$a2,$a3);
    print_r($result);
    /*
    Array ( [a] => red [b] => green )
    */
    
  • array_diff_ukey(): 比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)

    function myfunction($a,$b)
    
        echo $a."和".$b."<br>";
        if ($a===$b)
        
            return 0;
        
        return ($a>$b)?1:-1;
    
    
    $a1=array("a"=>"red","b"=>"green","c"=>"blue");
    $a2=array("d"=>"red","b"=>"green","e"=>"blue");
    
    $result=array_diff_ukey($a1,$a2,"myfunction");
    print_r($result); // Array ( [c] => blue )
    
  • array_diff_assoc(): 比较数组,返回两个数组的差集(比较键名和键值)

    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
    $a2=array("e"=>"red","f"=>"green","g"=>"blue");
    
    $result=array_diff_assoc($a1,$a2);
    print_r($result);
    /*
    Array ( [a] => red [b] => green [c] => blue [d] => yellow )
    */
    
  • array_diff_uassoc(): 比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)

    function myfunction($a,$b)
    
        echo $a."和".$b."<br>";
        if ($a===$b)
        
            return 0;
        
        return ($a>$b)?1:-1;
    
    
    $a1=array("a"=>"red","b"=>"green","c"=>"blue");
    $a2=array("d"=>"red","b"=>"green","e"=>"blue");
    
    $result=array_diff_uassoc($a1,$a2,"myfunction");
    print_r($result);// Array ( [a] => red [b] => green )
    
  • array_udiff_assoc() 比较数组,返回两个数组的差集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)

  • array_udiff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用两个用户自定义的键名比较函数)

交集API
  • array_intersect() 比较数组,返回两个数组的交集(只比较键值)

  • array_uintersect() 比较数组,返回两个数组的交集(只比较键值,使用一个用户自定义的键名比较函数)

  • array_intersect_assoc() 比较数组,返回两个数组的交集(比较键名和键值)

  • array_intersect_uassoc() 比较数组,返回两个数组的交集(比较键名和键值,使用用户自定义的键名比较函数)

  • array_uintersect_uassoc() 比较数组,返回两个数组的交集(比较键名和键值,使用两个用户自定义的键名比较函数)

  • array_uintersect_assoc() 比较数组,返回两个数组的交集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)

  • array_intersect_key() 比较数组,返回两个数组的交集(只比较键名)

  • array_intersect_ukey() 比较数组,返回两个数组的交集(只比较键名,使用用户自定义的键名比较函数)

结构API
  • aray_filter(): 用回调函数过滤数组中的元素

    function test_odd($var)
    
        return($var >= 3);
    
    
    $a1=array(1,0,2,3,4);
    print_r(array_filter($a1,"test_odd")) // Array ( [3] => 3 [4] => 4 )
    
  • array_filp(): 反转/交换数组中的键名和对应关联的键值

    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
    $result=array_flip($a1);
    print_r($result);// Array ( [red] => a [green] => b [blue] => c [yellow] => d )
    
  • array_map(): 将用户自定义函数作用到给定数组的每个值上,返回新的值

function myfunction($num)

   return($num*$num);

 
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a)); // Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

function myfunction($v1,$v2)

    if ($v1===$v2)
    
       return "same";
    
    return "different";

 
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction",$a1,$a2));
  • array_merge(): 把一个或多个数组合并为一个数组

    $a1=array("a"=>"red","b"=>"green");
    $a2=array("c"=>"blue","b"=>"yellow");
    print_r(array_merge($a1,$a2));//Array([a] => red,[b] => yellow,[c] => blue)
    
    $a=array(3=>"red",4=>"green");
    print_r(array_merge($a));// Array ( [0] => red [1] => green )
    
  • array_merge_recursive(): 递归地把一个或多个数组合并为一个数组

    $a1=array("a"=>"red","b"=>"green");
    $a2=array("c"=>"blue","b"=>"yellow");
    print_r(array_merge_recursive($a1,$a2));
    /*
    Array ( 
       [a] => red 
       [b] => Array ( 
           [0] => green 
           [1] => yellow 
        ) 
        [c] => blue 
    )
    */
    
填充API
  • array_fill(): 用给定的键值填充数组

    $a1=array_fill(3,4,"blue");
    // 3:开始位 4:填充多少位 “blue”:值
    
  • array_fill_keys() 用给定的指定键名的键值填充数组

取值API
  • array_key_exists() : 检查指定的键名是否存在于数组中

    $a=array("Volvo"=>"XC90","BMW"=>"X5");
    array_key_exists("Volvo",$a) // 1
    
  • in_array(): 检查数组中是否存在指定的值

$a=array("Volvo"=>"XC90","BMW"=>"X5");
in_array("XC90",$a) // 1
  • array_key_first(): 获取指定数组的第一个键值
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$firstKey = array_key_first($array);
  • array_key_last() : 获取指定数组的最后一个键值
$array = ['a' => 1, 'b' => 2, 'c' => 3];
$lastKey = array_key_last($array);
  • array_keys(): 返回数组中所有的键名
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));// Array ( [0] => Volvo [1] => BMW [2] => Toyota )