数组的样子如下:
$arr = array(
array('a', 'b'),
array('c', 'd'),
array('e', 'f'),
)
我想要获取一个包含第一列数值的数组,例如 array('a', 'c', 'e')
我知道可以通过迭代数组并将值存储在另一个数组中轻松完成,但是否有更短的方法,例如内置的PHP函数或其他方式?
数组的样子如下:
$arr = array(
array('a', 'b'),
array('c', 'd'),
array('e', 'f'),
)
我想要获取一个包含第一列数值的数组,例如 array('a', 'c', 'e')
我知道可以通过迭代数组并将值存储在另一个数组中轻松完成,但是否有更短的方法,例如内置的PHP函数或其他方式?
从PHP 5.5开始你可以使用array_column()
函数:
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe'
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith'
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones'
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe'
)
);
$lastNames = array_column($records, 'last_name', 'id');
print_r($lastNames);
Array
(
[2135] => Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
)
$arr = array(
array('a', 'b'),
array('c', 'd'),
array('e', 'f'),
);
// You can make it look concise using array_map :)
$arr = array_map(function($x){ return $x[0]; }, $arr);
// $arr = array('a', 'c', 'e');
$foo = array_map('reset', $arr);
任何阅读你代码的人都需要知道,reset 的一个副作用是返回数组中的第一个值。这可能会使代码更易读,但它也有一个缺点,即如果数组没有以零为索引的条目,则无法正常工作:
$baz = array_map(function ($a) { return $a[0]; }, $arr);
function array_first($a) {
return reset($a);
}
$baz = array_map('array_first', $arr);
reset
返回的是第一个元素,而不是由 0
索引的元素。无论哪种方式都可以正常工作。 - deceze不使用任何循环是不可能做到的...
为了实现它,只需使用循环并将值存储在新数组中,或者使用回调函数来获取您的值。
array_values()
会返回数组中的元素,但我认为这并没有什么帮助。 - Aram Kocharyanget_first_entry_from_all_sub_arrays()
不是内置的。你必须以某种方式循环。 - deceze