Индекс не непрерывного массива

0

У меня есть массив с не столь постоянными индексными номерами, как показано ниже:

$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++;
    }
}

Любая идея, как получить эту работу?

Теги:
arrays

3 ответа

3
Лучший ответ

Достаточно просто сделать $arr = array_values($arr);

  • 0
    хороший супер простой метод! благодарю вас. и большое спасибо всем остальным тоже!
0

использование

$array_with_new_keys = array_values($arr); // sorted by original key order

echo "<pre>";print_r($array_with_new_keys);
0

Вы можете использовать как

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню