php - 这是在两种不同类型的数组之间进行转换的最佳方法吗?

标签 php arrays

我需要像这样转换数组

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"];
}

这是转换这些数组的最佳方法吗? (特别是当数组很大时。)

最佳答案

消耗内存最少的方法是使用生成器。像这样的东西应该可以工作,但我还没有测试过。

function flatten(array $inArray) {
  foreach($inArray as $subArray) {
    yield $subArray['key'] => $subArray['val'];
  }
}

$newArray = iterator_to_array(flatten($oldArray));

注意: 为此,您需要 PHP 5.5+。

关于php - 这是在两种不同类型的数组之间进行转换的最佳方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28600708/

相关文章:

arrays - 如何在 Go 中分配非常量大小的数组

javascript - 从一系列对象构建家谱

javascript - 通过 jquery ajax 发布表单数据时如何从 php 检索回显数据?

php - 为什么我在不同的在线编译器上得到不同的输出?

php - bool(false) 出现在 bind_param() 函数中

Java程序占用内存过多

javascript - 如何以值路径作为引用来迭代数组

javascript - 即使发生匹配,$.grep 也会返回空数组

php - 动态调用非静态方法

python - 切片广播对象?