我有一个数组$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)
我担心这是非常基本的,但对我的问题最简单的解决办法是什么?
答案 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;