6

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

2 回答 2

15

在 PHP 5.5 中:

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

在 PHP <=5.5 中:

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

<=因为这当然也适用于 5.5)

于 2013-09-13T11:13:37.347 回答
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);

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

于 2013-09-13T11:24:05.763 回答