首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在php中使用数组函数从多维数组中获取具有特定条件的特定列

仅在php中使用数组函数从多维数组中获取具有特定条件的特定列
EN

Stack Overflow用户
提问于 2016-01-04 12:34:01
回答 4查看 2.6K关注 0票数 0

我想通过索引0,1,2从多维数组中只使用数组函数来获得具有特定条件的特定键。

使用forloop正在获得,但我希望它使用数组函数进行代码优化。

我的输入代码如下:

代码语言:javascript
复制
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格式如下:

代码语言:javascript
复制
Array
    (
        [0] => 1324,
        [1] => 13241,
)

我正在尝试以下代码:

代码语言:javascript
复制
$ios_token = array_map(function($r) {
            return $r['device_token'];
        }

这给了我所有的设备令牌。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-04 12:38:56

array_filter应该为您这样做:

http://php.net/manual/en/function.array-filter.php

代码语言:javascript
复制
$ios_token = array_filter($myArray, function($item) {
    return $item['device_type'] == 0;
});

它对每个值进行迭代,如果回调函数返回true,则返回数组的当前值。

然后,您可以像以前一样,在array_map函数中传递变量:

代码语言:javascript
复制
$ios_token = array_map(function($item){
    return $item['device_token'];
}, $ios_token);

如果你想把每件事都分组:

代码语言:javascript
复制
$ios_token = array_map(function($item){
    return $item['device_token'];
}, array_filter($myArray, 
    function($item) {
        return $item['device_type'] == 0;
    }
));
票数 3
EN

Stack Overflow用户

发布于 2016-01-04 12:51:25

array_map()函数为您提供了更多使用数组的可能性。

地图

代码语言:javascript
复制
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))));
票数 1
EN

Stack Overflow用户

发布于 2016-01-04 12:40:37

在这里你需要reduce

代码语言:javascript
复制
$ios_token = array_reduce(
    $your_array, 
    function($t, $v) {
        if ($v['device_type'] == 0)
            $t[] = $v['device_token'];

        return $t;
    },
    array()
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34591287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档