我有一个数组。在print_r($arr)
之后,如下所示:
Array (
[0] => Array (
[groupid] => 5
[radminid] => 1
[type] => system
[system] => private
)
[1] => Array (
[groupid] => 10
[radminid] => 2
[type] => system
[system] => private
)
)
我想将数组key
更改为groupid
,类似$arr[$arr[groupid]]
,我尝试了
foreach($array as $key => $value){
$arr[$value] = $arr[$arr['groupid']];
}
如何使用$arr[groupid]
作为$arr
键?下面是我需要的。
Array (
[5] => Array (
[groupid] => 5
[radminid] => 1
[type] => system
[system] => private
)
[10] => Array (
[groupid] => 10
[radminid] => 2
[type] => system
[system] => private
)
)
谢谢。
答案 0 :(得分:9)
您可以使用
$array = array_column($array, null, 'groupid');
array_column —从输入数组的单个列中返回值
注意:
column_key 要返回的值列。该值可能是 您希望检索的列的整数键,也可以是 关联数组或属性名称的字符串键名称。也可能 为 NULL 以返回完整的数组或对象(这很有用 使用 index_key 重新索引数组)。
如果没有array_column的支持。请参阅link。
输出
Array
(
[5] => Array
(
[groupid] => 5
[radminid] => 1
[type] => system
[system] => private
)
[10] => Array
(
[groupid] => 10
[radminid] => 2
[type] => system
[system] => private
)
)
答案 1 :(得分:1)
您只需要遍历数组并将密钥替换为所需密钥。
$newArray = array();
for($i=0;$i<count($array);$i++){
$newArray[$array[$i]['groupid']] = $array[$i];
}
var_dump($array);
答案 2 :(得分:1)
array_column是您要寻找的,
$array = array_column($array,null,"groupid");
答案 3 :(得分:0)
使用array_walk
array_walk($a, function($v) use(&$r){$r[$v['groupid']] = $v;});
答案 4 :(得分:0)
您可以使用array_reduce进行此类操作(sandbox):
$array = array_reduce($array, function ($accu, $curr) {
$accu[$curr['groupid']] = $curr;
return $accu;
}, []);
输出:
Array
(
[5] => Array
(
[groupid] => 5
[radminid] => 1
[type] => system
[system] => private
)
[10] => Array
(
[groupid] => 10
[radminid] => 2
[type] => system
[system] => private
)
)