我想通过索引0,1,2从多维数组中只使用数组函数来获得具有特定条件的特定键。
使用forloop正在获得,但我希望它使用数组函数进行代码优化。
我的输入代码如下:
Array
(
[0] => Array
(
[device_token] => 1324
[device_type] => 0
)
[1] => Array
(
[device_token] => 2546
[device_type] => 1
)
[2] => Array
(
[device_token] => 13241
[device_type] => 0
)
[3] => Array
(
[device_token] => 12345
[device_type] => 1
)
)我只想要device_token,它的device_type=0格式如下:
Array
(
[0] => 1324,
[1] => 13241,
)我正在尝试以下代码:
$ios_token = array_map(function($r) {
return $r['device_token'];
}这给了我所有的设备令牌。
发布于 2016-01-04 12:38:56
array_filter应该为您这样做:
http://php.net/manual/en/function.array-filter.php
$ios_token = array_filter($myArray, function($item) {
return $item['device_type'] == 0;
});它对每个值进行迭代,如果回调函数返回true,则返回数组的当前值。
然后,您可以像以前一样,在array_map函数中传递变量:
$ios_token = array_map(function($item){
return $item['device_token'];
}, $ios_token);如果你想把每件事都分组:
$ios_token = array_map(function($item){
return $item['device_token'];
}, array_filter($myArray,
function($item) {
return $item['device_type'] == 0;
}
));发布于 2016-01-04 12:51:25
array_map()函数为您提供了更多使用数组的可能性。
地图
function myfunction($v)
{
if ($v['device_type']==0)
{
return $v['device_token'];
}
return null;
}
$a=array(...) // your array here
print_r(array_values(array_filter(array_map("myfunction",$a))));发布于 2016-01-04 12:40:37
在这里你需要reduce
$ios_token = array_reduce(
$your_array,
function($t, $v) {
if ($v['device_type'] == 0)
$t[] = $v['device_token'];
return $t;
},
array()
);https://stackoverflow.com/questions/34591287
复制相似问题