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


How can I get the array of a single type from a multi dimensional array (without a loop)

>我有以下数组$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)
}

我需要一个客户端 ID 数组(仅)

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

像这样:

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

在 PHP 5.5 中:

$rgResult = array_column($foo, 'clientId');

在 PHP 中 <=5.5:

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

(放<=,因为这个原因,也可以在 5.5 中工作)

作为 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);

我承认,它并不完全直观或可读