更改阵列主键

时间:2014-11-07 17:50:48

标签: php arrays

我有一个数组$users

Array
(
[0] => Array
    (
        [id] => 3
        [name] => name3
    )

[1] => Array
    (
        [id] => 4
        [name] => name4
    )

[2] => Array
    (
        [id] => 5
        [name] => name5
    )

[3] => Array
    (
        [id] => 6
        [name] => name6
    )

)

必须看起来像:

Array
(
[3] => Array
    (
        [id] => 3
        [name] => name3
    )

[4] => Array
    (
        [id] => 4
        [name] => name4
    )

[5] => Array
    (
        [id] => 5
        [name] => name5
    )

[6] => Array
    (
        [id] => 6
        [name] => name6
    )

)

我的数组的“主”键必须是用户ID才能更容易访问。 所以我可以使用:

$users[$userid]['name']

其中$userid为int(6),结果为string(name6)

我担心这是非常基本的,但对我的问题最简单的解决办法是什么?

3 个答案:

答案 0 :(得分:2)

如果你正在使用PHP< 5.5,它几乎一样简单:

$newUsers = array();
foreach($users as $data) {
    $newUsers[$data['id']] = $data;
}

答案 1 :(得分:1)

如果您使用的是PHP> = 5.5,则可以像

一样简单
$newArray = array_combine(
    array_column($oldArray, 'id'),
    $oldArray
);

对于早期版本的PHP,您可以使用

$newArray = array_combine(
    array_map(
        function($value) {
            return $value['id'];
        },
        $oldArray
    ),
    $oldArray
);

答案 2 :(得分:1)

  

我使用mysqli查询创建该数组

为什么不首先使用您想要的键生成阵列?
而不是在事后改变它们?

所以不要这样:

while ($row = $result->fetch_assoc())
   $result[] = $row;

类似的东西:

while ($row = $result->fetch_assoc())
   $result[$row['id']] = $row;