我有一个数组,它的索引号不那么连续,如下所示:
$arr[0] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[1] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[3] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[7] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[8] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
我希望索引号是连续的,比如0、1、2、3、4,但下面的代码不起作用。它只适用于连续的索引号,在本例中为0和1,并且仅限于此。
$idx = 0;
$new_arr = array();
for( $i = 0; $i < sizeof( $arr ); $i++ ) {
if( isset( $arr[$i] ) ) {
$new_arr[$idx] = $arr[$i];
$idx++;
}
}
知道怎么做吗?
只做$arr = array_values($arr);
就足够了
您可以像一样使用
$arr[0] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[1] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[3] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[7] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$arr[8] = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' );
$new_arr = array();
foreach($arr as $a){
array_push( $new_arr,$a);
}
echo "<pre>";
print_r($new_arr);
echo "</pre>";exit;
使用
$array_with_new_keys = array_values($arr); // sorted by original key order
echo "<pre>";print_r($array_with_new_keys);