我有这个数组:
$arr = array(
0 => array( 'id' => 1, 'animal' => 'dog', 'color' => 'red' ),
1 => array( 'id' => 12, 'animal' => 'cat', 'color' => 'green' ),
2 => array( 'id' => 37, 'animal' => 'lion', 'color' => 'blue' ),
);
我想要这个输出:
$arr = array(
1 => array( 'animal' => 'dog', 'color' => 'red' ),
12 => array( 'animal' => 'cat', 'color' => 'green' ),
37 => array( 'animal' => 'lion', 'color' => 'blue' ),
);
有什么好主意而不是使用php循环等吗?
任何功能?例如array_values
或array_combine
=================
可能的解决方案
$new = array();
foreach( $arr as $item ){
$id = array_shift( $item );
$new[$id] = $item;
}
答案 0 :(得分:5)
需要PHP> = 5.5.0且id
仍然在嵌套数组中:
$result = array_column($arr, null, 'id');
答案 1 :(得分:2)
可以定义一个新数组并循环遍历主数组,使用array_shift
弹出第一个元素(id字段),然后在新数组中为该索引创建剩余部分值:
$new = array();
foreach( $arr as $item ){
$id = array_shift( $item );
$new[$id] = $item;
}