简体   繁体   English

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

[英]Is this the best way to convert between two different types of array?

I need to convert array like this 我需要像这样转换数组

array(
    0=>array("key"=>"key1", "val"=>"val1"),
    1=>array("key"=>"key2", "val"=>"val2"),
    2=>array("key"=>"key3", "val"=>"val3"),
)

To array like this 像这样排列

array(
  "key1"=>"val1",
  "key2"=>"val2",
  "key3"=>"val3",
)

I do like below: 我喜欢以下内容:

foreach($oldArray as $element){
    $newArray[$element["key"]] = $element["val"];
}

Is this the best way to convert these arrays? 这是转换这些数组的最佳方法吗? (Especially if the array is huge.) (特别是如果数组很大。)

The least memory consuming way would be to use generators. 内存消耗最少的方法是使用生成器。 Something like this should work, but I haven't tested it. 像这样的东西应该可以,但是我还没有测试过。

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

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

Note: You need PHP 5.5+ for this. 注意:为此,您需要PHP 5.5+。

Yes, the best way is using a foreach, even if your array is huge, that's not take many time. 是的,最好的方法是使用foreach,即使您的数组很大,也不会花费很多时间。

Is your code working now? 您的代码现在可以正常工作了吗? Else I can help you. 其他我可以帮助您。

You can tell php to use foreach on their own like below. 您可以像下面这样告诉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>';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM