如何从多维数组中获取单个类型的数组(没有循环)

时间:2013-09-13 11:10:59

标签: php arrays multidimensional-array

我有以下数组$ foo

array(10) {
[0] => array(4) {

["merchantId"] => string(5) "12e21"
["programId"] => string(27) "ddd3333"
["networkId"] => int(4)
["clientId"] => int(178)
}
[1] => array(4) {

["merchantId"] => string(5) "112e1"
["programId"] => string(27) "2vfrdbv1&=10&tmfdpid=csss"
["networkId"] => int(4)
["clientId"] => int(178)
}
[2] => array(4) {

["merchantId"] => string(5) "112e1"
["programId"] => string(27) "2vfrdbv1&=10&tmfdpid=csss"
["networkId"] => int(4)
["clientId"] => int(178)
}

我需要一个clientId数组(仅限)

是否可以只访问clientId来创建一个没有循环的id数组?

类似的东西:

$foo['clientId']; //which doesn't work

2 个答案:

答案 0 :(得分:15)

在PHP 5.5中:

$rgResult = array_column($foo, 'clientId');
PHP中的

< = 5.5:

$rgResult = array_map(function($rgItem)
{
  return $rgItem['clientId'];
}, $foo);

(放<=因为这个原因,也适用于5.5)

答案 1 :(得分:0)

作为array_column()的替代

$transpose = call_user_func_array(
    'array_map',
    array_merge(
        array(NULL),
        $data
    )
);
$result = $transpose[array_search("programId", array_keys($data[0]))];
var_dump($result);

可以在PHP5.5中以单行方式完成

$result = call_user_func_array('array_map',array_merge(array(NULL),$data))[array_search("programId", array_keys($data[0]))];
var_dump($result);

我承认,虽然不是直观或可读的