我想更改数组的索引,但我不知道该怎么做.. 以下数组
array(
0 => array ( 'id' => 33, 'name' => 'test' )
1 => array ( 'id' => 37, 'name' => 'test2' )
)
应该成为 - 如果我想要索引
array(
33 => array ( 'id' => 33, 'name' => 'test' )
37 => array ( 'id' => 37, 'name' => 'test2' )
)
或者如果我想要名字
array(
test => array ( 'id' => 33, 'name' => 'test' )
test2 => array ( 'id' => 37, 'name' => 'test2' )
)
也适用于多维数组
array(
0 => array ( 'id' => 33, 'details' => array (name => 'test' , age ='50' ) )
1 => array ( 'id' => 37, 'details' => array (name => 'test2' , age ='60' ) )
)
索引用名称 - test或test2
替换0和1现在我做了一个函数但是没有使用多维数组
function index_array( $array, $index ){
$new_array = array();
foreach($array as $key => $value){
$new_array[$index] = $array[$key];
}
return $new_array;
}
答案 0 :(得分:3)
$array = array(33 => $oldarray[0], 37 => $oldarray[1]);
$array = array('test' => $oldarray[0], 'test2' => $oldarray[1]);
由于在分配之前评估表达式的右侧,您还可以在两侧使用$array
而不是使用不同的变量名称。
答案 1 :(得分:1)
我会使用第一部分的映射表,或第二部分的简单foreach
:
<?php
$arr = array(
0 => array( 'id' => 33, 'name' => 'test' ),
1 => array( 'id' => 37, 'name' => 'test2' )
);
/* Convert to other indexes */
$mapping = array(
0 => 33,
1 => 37
);
foreach($arr as $k => $v){
unset($arr[$k]);
$arr[$mapping[$k]] = $v;
}
print_r($arr);
/* Convert key to name field */
foreach($arr as $k => $v){
unset($arr[$k]);
$arr[$v['name']] = $v;
}
print_r($arr);
编辑:现在我再次阅读了您的问题,第一部分实际上与第二部分相同,但仅使用id
字段而不是name
字段。
EDIT2 :请注意,您必须使用另一个数组来写入,以避免覆盖,这将在id
字段用作替换时发生。