Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数组的一个深度值设置为键_Php_Arrays_Mapping - Fatal编程技术网

Php 将数组的一个深度值设置为键

Php 将数组的一个深度值设置为键,php,arrays,mapping,Php,Arrays,Mapping,背景 假设您有一个如下所示的数组,并且我们知道id值是唯一的: [ 0 => [ 'id' => 5, 'name' => 'First item' ], 1 => [ 'id' => 10, 'name' => 'Second item', ], ... ] 问题: 有没有一种方法可以将这个数组映射到一个将id值作为键的数组,同时保持其余值不变 期望结

背景

假设您有一个如下所示的数组,并且我们知道id值是唯一的:

[
    0 => [
        'id' => 5,
        'name' => 'First item'
    ],
    1 => [
        'id' => 10,
        'name' => 'Second item',
    ],

    ...
]
问题:

有没有一种方法可以将这个数组映射到一个将id值作为键的数组,同时保持其余值不变

期望结果

请注意,现在数组的键与id值匹配,理想的结果是:

[
    5 => [
        'id' => 5,
        'name' => 'First item'
    ],
    10 => [
        'id' => 10,
        'name' => 'Second item'
    ]

    ...
]
小细节


就我而言,id键/值对是否仍然存在于数组中并不重要,但我希望如果一种解决方案存在于一种情况下,另一种解决方案不会有太大差异。

有一个内置的数组函数:

$result = array_column($array, null, 'id');

如果子数组中不存在id,则它将从上一个增加,并且如果该键稍后是id,则可能会被覆盖。

有一个内置的数组函数:

$result = array_column($array, null, 'id');
如果子数组中不存在id,则它将从上一个增加,并且如果该键稍后是id,则可能会被覆盖。

循环方法:

$newArray = [];
foreach ($array as $k => $v) {
    $newArray[$v['id']] = $v;
}
循环方法:

$newArray = [];
foreach ($array as $k => $v) {
    $newArray[$v['id']] = $v;
}

编辑ID使其更明显。你放弃了吗?@abracadver-Aha,对不起。不,我没有放弃。因为工作的关系,我一直没有回来。我很快就会带着那个复选标记回来编辑ID使其更明显。你放弃了吗?@abracadver-Aha,对不起。不,我没有放弃。因为工作的关系,我一直没有回来。我很快就会带着那个复选标记回来