加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

分享六个相对好用的php数组Array函数

发布时间:2023-02-24 15:21:38 所属栏目:PHP教程 来源:
导读:这篇文章给大家分享六个比较好用的php数组Array函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧。1. array_column 返回输入数组中某个单一列的值。2. array_filter 用回调函数过滤数组中的元素。3. arr

这篇文章给大家分享六个比较好用的php数组Array函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧。

1. array_column 返回输入数组中某个单一列的值。

2. array_filter 用回调函数过滤数组中的元素。

3. array_map 将用户自定义函数作用到给定数组的每个值上,返回新的值。

4. array_walk_recursive 对数组中的每个成员递归地应用用户函数。

5. extract (从数组中将变量导入到当前的符号表), compact (创建一个包含变量名和它们的值的数组)

6. uasort 使用用户自定义的比较函数对数组中的键值进行排序。

1. array_column 返回输入数组中某个单一列的值。

类似功能有

1.1 Yii2 中的 ArrayHelper::index($array, 'id');

1.2 Yii2 中的 $query->select(['last_name', 'id'])->indexBy('id')->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 

2. array_filter 用回调函数过滤数组中的元素。

function test_odd($var) 

  return($var & 1); 

$a1=array("a","b",2,3,4); 

print_r(array_filter($a1,"test_odd")); 

输出:

Array 

    [2] => 2 

    [3] => 3 

    [4] => 4 

3. array_map 将用户自定义函数作用到给定数组的每个值上,返回新的值。

此函数有点类似与 array_walk_recursive , 只是多写了一步递归

function myfunction($v) { 

   if (is_array($v)) { 

     return array_map("myfunction", $v); 

   } 

  return($v * $v); 

}  

 $a = array(1, 2, 3, 4, 5, 6 => [2, 3]); 

print_r(array_map("myfunction", $a)); 

输出:

Array 

    [0] => 1 

    [1] => 4 

    [2] => 9 

    [3] => 16 

    [4] => 25 

    [6] => Array 

        ( 

            [0] => 4 

            [1] => 9 

        ) 

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  

    [0] => different 

    [1] => same 

    [2] => different 

4. array_walk_recursive 对数组中的每个成员递归地应用用户函数。

此函数有点类似与 array_map, 只是省去了写递归

function myfunction(&$value, $key, $p) { 

  if ($value == 'xxx') { 

    $value = $p; 

  } 

$a = array("a" => "red", "b" => "green", "c" => "blue", 'd' => ['x' => 'xxx', 'y' => 'yyy']); 

array_walk_recursive($a, "myfunction", 'green'); 

print_r($a); 

输出:

Array 

    [a] => red 

    [b] => green 

    [c] => blue 

    [d] => Array 

        ( 

            [x] => green 

            [y] => yyy 

        ) 

5. extract (从数组中将变量导入到当前的符号表), compact (创建一个包含变量名和它们的值的数组)

$a = "Original"; 

$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); 

 extract($my_array); 

 echo "/$a = $a; /$b = $b; /$c = $c"; 

输出:

$a = Cat; $b = Dog; $c = Horse 

 

$firstname = "Peter"; 

 $lastname = "Griffin"; 

 $age = "41"; 

$result = compact("firstname", "lastname", "age"); 

 print_r($result); 

输出:

Array 

    [firstname] => Peter 

    [lastname] => Griffin 

    [age] => 41 

6. uasort 使用用户自定义的比较函数对数组中的键值进行排序(可以对二维数组排序)。

$arr2 = [ 

  [ 

    'id' => 3, 

    'age' => 33, 

  ], 

  [ 

    'id' => 2, 

    'age' => 44, 

  ], 

  [ 

    'id' => 1, 

    'age' => 22, 

  ], 

]; 

//按age字段升序排序 

uasort($arr2, function($a, $b) { 

  $field = 'age'; 

  if ($a[$field] == $b[$field]){ 

    return 0; 

  } 

  return ($a[$field] < $b[$field]) ? -1 : 1; 

}); 

print_r($arr2); 

输出:

Array 

    [2] => Array 

        ( 

            [id] => 1 

            [age] => 22 

        ) 

 

    [0] => Array 

        ( 

            [id] => 3 

            [age] => 33 

        ) 

    [1] => Array 

        ( 

            [id] => 2 

            [age] => 44 

        ) 

)

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!