分享六个比较好用的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
        )

)

总结

以上所述是小编给大家介绍的六个比较好用的php数组Array函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • PHP使用in_array函数检查数组中是否存在某个值

    本文实例讲述了PHP使用in_array函数检查数组中是否存在某个值的方法.分享给大家供大家参考.具体分析如下: PHP使用in_array()函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE了,非常的好用,下面我深入来为各位介绍in_array() 函数. 最近在用php写一段代码时,要用到判断某值是否在另外一组值中.而in_array 函数就是用来检查数组中是否存在某个值 .直接通过概念理解比较模糊,可以通过具体例子了解其作用. 语法如下: bool in_ar

  • PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)

    本文实例讲述了PHP计算数组中值的和与乘积的方法.分享给大家供大家参考,具体如下: 一.概述: array_sum() 函数用于计算数组中所有值的和. array_product() 函数用于计算数组中所有值的乘积. 二.使用示例: array_sum() PHP array_sum() 函数用于计算数组中所有值的和,以整数或浮点数返回计算结果,非数字的单元将视作 0 . 语法: number array_sum( array array ) 例子: <?php $arr_a = array(1

  • PHP中使用array函数新建一个数组

    PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性.由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的. array (PHP 4, PHP 5) array - 新建一个数组 说明 复制代码 代码如下: array array ([ mixed $... ] ) 返回根据参数建立的数组.参数可以用 => 运算

  • php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】

    本文实例总结了php常用数组array函数.分享给大家供大家参考,具体如下: array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 案例: <?php $a = array("one","two","three"); $b = array("一","二","三"); $c = array_combine($a,$b); print_r($c

  • 浅谈PHP检查数组中是否存在某个值 in_array 函数

    PHP in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE . 语法: bool in_array( mixed needle, array array [, bool strict] ) 参数说明: 参数 说明 needle 需要在数组中搜索的值,如果是字符串,则区分大小写 array 需要检索的数组 strict 可选,如果设置为 TRUE ,则还会对 needle 与 array 中的值类型进行检查 例子: <?php $arr_a = a

  • php 利用array_slice函数获取随机数组或前几条数据

    先给大家说下基本语法: array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列. 如果 offset 非负,则序列将从 array 中的此偏移量开始.如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始. 如果给出了 length 并且为正,则序列中

  • php array_map使用自定义的函数处理数组中的每个值

    array_map 将回调函数作用到给定数组的单元上. 说明 array array_map ( callable $callback , array $arr1 [, array $... ] ) array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组. 回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致. 参数介绍: 参数 描述 callback 必需.对每个数组的每个元素作用的回调函数. arr1 必需.将

  • php array_walk_recursive 使用自定的函数处理数组中的每一个元素

    array_walk_recursive 对数组中的每个成员递归地应用用户函数 基本语法 bool array_walk_recursive ( array &$input , callable $funcname [, mixed $userdata = NULL ] ) 将用户自定义函数 funcname 应用到 array 数组中的每个单元.本函数会递归到更深层的数组中去.在funcname 函数中,数组的键名和键值是该函数的参数. 参数介绍: 参数 描述 input 必需.输入的数组.

  • 分享六个比较好用的php数组Array函数

    1. array_column 返回输入数组中某个单一列的值. 2. array_filter 用回调函数过滤数组中的元素. 3. array_map 将用户自定义函数作用到给定数组的每个值上,返回新的值. 4. array_walk_recursive 对数组中的每个成员递归地应用用户函数. 5. extract (从数组中将变量导入到当前的符号表),  compact (创建一个包含变量名和它们的值的数组) 6. uasort 使用用户自定义的比较函数对数组中的键值进行排序. 1. arra

  • 六个Python3中使用最广泛的内置函数总结

    目录 1.引言 2.内置函数详解 2.1 Lamdba 函数 2.2 Map 函数 2.3 Filter 函数 2.4 Reduce 函数 2.5 Enumerate 函数 2.6 Zip 函数 3.总结 1.引言 小屌丝:鱼哥, 都说要想代码写的溜,Lamdba不能少. 小鱼:你在项目代码多写几个lamdba试试,看看架构师找不找你喝茶水. 小屌丝:… 小鱼:逗你玩… 架构师哪舍得自己花钱买茶叶,都是能蹭就蹭… 小屌丝:… 小鱼:你这突然提到lamdba函数,是想了解点什么?? 小屌丝:嘿嘿,

  • 六个Python编程最受用的内置函数使用详解

    目录 1. Map 函数 2. Lamdba 函数 3. Enumerate 函数 4. Reduce 函数 5. Filter 函数 6. Zip 函数 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高. 1. Map 函数 map函数可以使用另外一个函数转换整个可迭代对象的函数,包括将字符串转换为数字.数字的四舍五入等等. 之所以使用map函数来完成这些事情可以节约内存,使代码的运行速度提高,并且使用的代码量比较少. 比如这里需要将一个字符串的数组

  • 判断一个变量是数组Array类型的方法

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象的方法 1.typeof操作符 这种方法对于一些常用的类型来说那算是毫无压力,比如Function.String.Number.Undefined等,但是要是检测Array的对象就不起作用了. 复制代码 代码如下: alert(typeof null); // "object" alert

  • 值得分享和收藏的Bootstrap学习教程

    首先先感谢朋友们对小编的支持,关注小编的文章,和小编一起学习进步,一直的陪伴,小编也一定会再接再厉,为大家分享更多精彩的文章. 在分享的过程中遇到了一些问题,这也给了我很大的启发,大家在搜索相关文章时都没有针对此类问题进行的系统整理文章,这也是小编需要在今后进行改进的. 所以本文就吸取这个经验,针对Bootstrap教程进行系统整理,希望对大家的学习有所帮助,便于大家学习. 小编的水平能力都很有限,还望大牛多给一些建议和看法,帮助小编进行改正和提高,如果文中确有不妥之处,还请谅解.希望能和大家共

  • 六款帮助你实现惊艳视差滚动效果的jQuery插件

    在网页设计中,视差滚动(Parallax Scrolling)是当下流行的网页设计技术,通过让多层背景以不同的速度或者不同的方向移动来形成非常有趣的 3D 运动效果.下面是一些运用视差滚动效果的优秀网页案例: 视差(Parallax)是指从不同的点看一个物体时形成的视觉差异,这个名词是源自希腊文的παράλλαξις (parallaxis),意思是"改变".在网页设计中,视差滚动(Parallax Scrolling)是当下流行的网页设计技术,通过让多层背景以不同的速度或者不同的方向

  • 分享12个非常实用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值.为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单.对于变量可以使用!!variable做检测,只要变量的值为:0.null." ".undefined或者NaN都将返回的是false,反之返回的是true.比如下面的示例: func

  • 5种PHP创建数组的实例代码分享

    看这篇文章之前相信大家都已经看过PHP中文手册关于数组这一节的讲解了,怎么样呢,看懂了多少?至少我第一次阅读文档时是一头雾水,也许是因为在翻译的不够通俗易懂吧^_^!!这里UncleToo根据自己的经验,将数组的各种创建方式用PHP实例代码的方式分享给大家,希望对大家有些帮助(当然,PHP文档还是要多看的) 1.使用array()创建数组 array()创建数组是我们在PHP开发过程中最常用到的一种方式,准确来说array()是一种结构而不是一个函数. 示例1: 复制代码 代码如下: <?php

  • 分享经典的JavaScript开发技巧

    JavaScript开发经典技巧分享给大家: 1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 2.使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但===和!==不会,它们会同时比较值和数据类型,这也使得它们要比==和!=快. [10] === 10    // is false [10]  == 10    // is true '10' == 10     // is true '10' ===

随机推荐