加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

介绍六个比较好用的php数组Array函数

发布时间:2022-08-04 14:15:01 所属栏目:PHP教程 来源:互联网
导读:这篇文章给大家分享六个比较好用的php数组Array函数,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧。 1. array_column 返回输入数组中某个单一列的值。 2. array_filter 用回调函数过滤数组中的元素。 3. array_map 将用户自定义函数作用到给定数
  这篇文章给大家分享六个比较好用的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
          )
   
  )

(编辑:我爱制作网_潮州站长网)

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

    热点阅读