从数组对象创建数组的更好方法

时间:2017-09-07 07:53:28

标签: php arrays

我有一个这样的数组对象:

 Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [name] => sam
        )

    [1] => stdClass Object
        (
            [id] => 2
            [name] => tim
        )

    [2] => stdClass Object
        (
            [id] => 3
            [name] => nic
        )

)

我想要这个:

Array
(
    [sam] => sample text
    [tim] => sample text
    [nic] => sample text
)

我目前的做法:

$arr = array();

foreach($multi_arr as $single_arr) {
    $arr[$single_arr->name] = "sample text";
}

是否有更清洁/更好的方法?感谢

1 个答案:

答案 0 :(得分:2)

您可以使用array_map获取所有密钥,然后使用array_fill_keys填充最终数组。

$arr = array_fill_keys(array_map(function($e) {
    return $e->name;
}, $multi_arr), "sample text");

如果sample text是stdClass对象的一部分:

$arr = array_merge(...array_map(function($e) {
    return [$e->name => $e->description];
}, $multi_arr));