php 关联数组 下标,array

您所在的位置:网站首页 flexa软件使用 php 关联数组 下标,array

php 关联数组 下标,array

2023-07-17 08:22| 来源: 网络整理| 查看: 265

前言:我自己用此类回调函数,来替代 foreach 纯粹是用为代码的简洁性,让代码更好看。(我有点代码小洁癖~)

1、array_reduce

当迭代处理一个一维索引数组时,在回调函数内是无法获取到当时元素索引的。所以想要获取时,需得借助一个外部变量。

目的:把 $arr 遍历到 标签内(就是拼接option字符串)

$arr = [

0 => '全部',

1 => 'a',

2 => 'b',

3 => 'c',

];

解决:

$index = 0;

$options = array_reduce($data, function($carry, $item) use (&$index){

## $index则为当前两个元素 $item 的索引

return $carry . '' . $item . '';

}, '');

var_dump($options);

输出为

全部abc

2、array_map(callable $callback , array $array1 [, array $... ] )

很多情况下,迭代的数据一般为一个 二维关联数组,但 array_map 本身在回调函数的函数体内无法获取到 关联数组的下标 的。

目的:在回调体内获取迭代关联数组的下标值。

解决:可以把关联数组的下标通过 array_map()的第三个形参把下标传进去。

$arr = [

'a' => 1,

'b' => 2,

'c' => 3

];

$res = array_map(function($item, $key){

echo '$arr[' . $key . ']=' . $item . '';

}, $arr, array_keys($arr));

输出结果为

$arr[a]=1

$arr[b]=2

$arr[c]=3

题外话,有个典型的应用,也可以这样用。打个比方,如入库商品。

## 接受商品的基本信息与规格信息

$arr = $_GET;

print_r($arr);

/*

Array

(

[goods] => 辣条

[spec] => Array

(

['attr'] => Array

(

[0] => 颜色

[1] => 口感

[2] => 副作用

)

['value'] => Array

(

[0] => 红色

[1] => 辣

[2] => The `菊花` is hot

)

)

)

*/

## 处理规格信息,使其可以批量添加

$arr['spec'] = array_map(function($item, $key){

return [

'attr' => $key,

'value' => $item,

];

}, $arr['spec']['value'], $arr['spec']['attr']);

print_r($arr);

/*

Array

(

[goods] => 辣条

[spec] => Array

(

[0] => Array

(

[attr] => 颜色

[value] => 红色

)

[1] => Array

(

[attr] => 口感

[value] => 辣

)

[2] => Array

(

[attr] => 副作用

[value] => The `菊花` is hot

)

)

)

*/

# 这样处理好数组就特别方便,数组中 `商品的规格` 的就可以批量添加了

参考资料:

laravel框架代码 - 集合 的封装 -> 传送门



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3