第一个值作为PHP数组中的键

时间:2015-05-04 20:45:10

标签: php arrays

我有这个数组:

$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_valuesarray_combine

=================
可能的解决方案

$new = array();
foreach( $arr as $item ){
    $id = array_shift( $item );
    $new[$id] = $item;
}

2 个答案:

答案 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;
}