我有一个带有两个值的数组,比如((id, value), (id, value), (id, value))
,我需要像id => value
一样做数组,所以我想知道php中有一些函数用于这种工作或者我需要编写我自己的。只是不想重新发明轮子....
更新
array(2) {
[0]=>
array(2) {
["site_id"]=>
string(3) "12"
["timestamp"]=>
string(19) "2014-01-09 08:48:40"
}
[1]=>
array(2) {
["site_id"]=>
string(3) "13"
["timestamp"]=>
string(19) "2014-02-07 14:27:57"
}
}
答案 0 :(得分:6)
php中的一些HOF,只是为了好玩:
$data = array(
array('foo', 'bar'),
array('baz', '42'),
);
$ithIx = function($ix) {
return function($item) use($ix) {
return $item[$ix];
};
};
$combined = array_combine(
array_map($ithIx(0), $data),
array_map($ithIx(1), $data)
);
var_dump($combined);
对于那些在功能风格上看不到美的人 - 这里有些无聊foreach
:
$combined = array();
foreach ($data as $val) {
$combined[$val[0]] = $val[1];
}
答案 1 :(得分:1)
另一种解决方案(半无聊):
$a = array(
array(1, 'Hello'),
array(2, 'World')
);
$a = array_combine(array_column($a, 0), array_column($a, 1));
(如果PHP <5.5)
function array_column($array, $column)
{
return array_map(function($e) use ($column) {return $e[$column];}, $array);
}