1

我有简单的数组

array( 
   array( 'id'=>5, 'something' => 2, 'dsadsa' => 'fsfsd )
   array( 'id'=>20, 'something' => 2, 'dsadsa' => 'fsfsd )
   array( 'id'=>30, 'something' => 2, 'dsadsa' => 'fsfsd )
)

如何以正确的方式通过 id 字段(或其他内容)创建关联数组?

array( 
   '5' => array(  'something' => 2, 'dsadsa' => 'fsfsd )
   '20' => array(  'something' => 2, 'dsadsa' => 'fsfsd )
   '30' => array(  'something' => 2, 'dsadsa' => 'fsfsd )
)
4

2 回答 2

2

沿着这些思路。

$new_array = array();
foreach ($original_array as &$slice)
    {
    $id = (string) $slice['id'];
    unset($slice['id']);
    $new_array[$id] = $slice;
    }
于 2012-07-16T08:03:25.287 回答
1

@NikitaKuhta,不。没有切片函数可以返回与给定键或列标题关联的二维键控表中的一列值。您可以使用一些回调 array_... 函数,但您仍然需要为每个元素执行一个自定义函数,所以它不值得。我不喜欢 Core Xii 的解决方案,因为这会破坏原始数组作为副作用。我建议你不要在这里使用引用:

$new_array = array();
foreach ($original_array as $slice) {
    $id = (string) $slice['id'];
    unset($slice['id']);
    $new_array[$id] = $slice;
}
# And now you don't need the missing unset( $slice)
于 2012-07-16T09:28:01.390 回答