3.4. 其它数组函数

未匹配的标注

持之以恒,方得始终!

操作数组指针

每个数组都有一个内部指针,指向了当前元素。

current()

获取当前指针所在的元素值
比如我们创建一个新数组,此时,数组指针就指向了第一个元素。我们可以 current($arr) 来获取。
其它数组函数

next()

将指针前移一个元素,并返回当前指针所指向的元素值
其它数组函数

reset()

重置数组指针
即回归到第一个元素上。并返回第一个元素值。

end()

将数组指针指向最后一个元素
同时返回最后一个元素值。

prev()

回移指针一个位置
和next()相反,它是将指针往回移一个位置,并返回其值。

end(),prev() 反向遍历一个数组

其它数组函数

上面的函数组合起来,可以实现按任何顺序读取的数组。

array_walk()

对数组每一个元素,应用自定义的函数
其实你可以理解为它是这样的:

$otherdata = ...
foreach($arr as $key => $value) {
    myfunc($value, $key, $otherdata);
}

看下函数原型
array_walk(array|object &$array, callable $callback, mixed $arg = null): bool
其实和前面章节中的 usort() 类似,把自己的函数,当作参数传给 array_walk(),或者直接把参数写为一个匿名函数也可。

说下参数:

  1. 第一个参数是要处理的数组。
  2. 第二个参数是自己写的函数,也就是要作用于数组中的每个元素的函数。
  3. 第三个参数是可选的,将这个参数传给我们自定义的函数。

我们自定义的函数一般是这样的

// 参数:元素值,元素key,其它额外数据
function myfuc($value, $key, $otherdata) {
    ...
}
function my_print($value) {
    echo "$value \n";
}

$arr = ['a', 'b', 'c'];

array_walk($arr, 'my_print');

其它数组函数

我们可以看到上面自定义函数的第一个参数是这样的 &$value, 它是引用传递,修改了它,会直接生效到数组中。

count()

获取数组元素的个数

$arr = ['name' => 'xxx', 'age' => 111, 'love' => 'php'];

var_dump(count($arr)); // int(3)

array_count_values()

每个值出现的次数

$arr = [4, 5, 1, 2, 3, 1, 2, 1];

print_r(array_count_values($arr));
/* Array
(
    [4] => 1
    [5] => 1
    [1] => 3
    [2] => 2
    [3] => 1
) */

extract() 将数组转为标量变量

一般针对的是关联数组,因为如果变量名称是 $0,$1,$2,就不对了。
它是一个数组中的 key,变为变量名称,value 就是该变量的值。

$arr = ['name' => 'BYD', 'type' => 'car', 'price' => '20w'];
extract($arr);
echo "$name - $type - $price"; // BYD - car - 20w

它还有两个可选参数

  1. extract_type, 假如和已有的变量重名,默认是覆盖已有变量,或者我们可以设置一个前缀,将其设置为 EXTR_PREFIX_ALL, 并且要给第三个参数。
  2. prefix, 给定一个前缀。如果发生有同名变量,可以自动加上前缀。

其它数组函数

其它数组函数

如有任何侵权行为,请通知我删除,谢谢大家!
个人邮箱:865460609@qq.com

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Junwind
讨论数量: 0
发起讨论 只看当前版本


暂无话题~