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

第一个值作为PHP数组中的键,php,arrays,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' =>

我有这个阵列:

$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\u值
array\u组合

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

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

需要PHP>=5.5.0且
id
仍将位于嵌套数组中:

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

您可以定义一个新数组并在主数组中循环,使用
array\u shift
弹出第一个元素(id字段),然后在新数组中为该索引生成剩余部分的值:

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

您正在修改一个数组。即使在函数调用中,您也将使用循环。看起来您必须捍卫您对使用“PHP循环”的厌恶,并解释(更详细地)您希望实现的功能。我认为,因为
id
是任意的,所以不会有函数来执行此操作。每个人的大脑都会直接进入显而易见的领域……哦,让我们来看看那个笨蛋!然后你会说……请不要循环……我们都会说……不,你还没有解释为什么你不想使用循环。大家的共识似乎是,现在是使用循环的正确时机,因此是向下的投票。@Arash it实际上仍然使用循环(当然你没有看到它们,但那又怎样),所以我不明白,不管怎样