我需要像这样转换数组
array(
0=>array("key"=>"key1", "val"=>"val1"),
1=>array("key"=>"key2", "val"=>"val2"),
2=>array("key"=>"key3", "val"=>"val3"),
)
像这样的数组
array(
"key1"=>"val1",
"key2"=>"val2",
"key3"=>"val3",
)
我喜欢以下内容:
foreach($oldArray as $element){
$newArray[$element["key"]] = $element["val"];
}
这是转换这些数组的最佳方法吗? (特别是如果阵列很大的话。)
答案 0 :(得分:3)
消耗最少的内存方式是使用生成器。这样的事情应该有用,但我还没有测试过它。
function flatten(array $inArray) {
foreach($inArray as $subArray) {
yield $subArray['key'] => $subArray['val'];
}
}
$newArray = iterator_to_array(flatten($oldArray));
注意:您需要PHP 5.5+。
答案 1 :(得分:1)
是的,最好的方法是使用foreach,即使你的阵列很大,也不需要很多时间。
你的代码现在有效吗?否则我可以帮到你。
答案 2 :(得分:1)
你可以告诉php自己使用foreach,如下所示。
$array = array(
0=>array("key"=>"key1", "val"=>"val1"),
1=>array("key"=>"key2", "val"=>"val2"),
2=>array("key"=>"key3", "val"=>"val3"),
);
$result = array();
array_walk($array, function($value) use (&$result) {
$result[$value['key']] = $value['val'];
});
echo '<pre>';
print_r($result);
echo '</pre>';