array_diff и изменение нумерации числовых ключей

(I'm a beginner)

Мой сценарий использует стандарт

$c = 0;
$t = count($array);

while ($c < $t) {
  $blah = $array[$c];
  ++$c;
}

скорее экстенсивно. Но я просто столкнулся с ситуацией, где мне также нужно array_diff и это повреждает это все к черту, потому что теперь числовые ключи имеют разрывы. Я добираюсь Undefined offset ошибки повсеместно.

Как я сбрасываю числовые ключи массива? Порядок объектов в массиве не важен.

6
задан Drew 4 March 2010 в 12:08
поделиться

3 ответа

Чтобы сбросить ключи, вы можете использовать array_values ​​() :

$array = array_values($array);
27
ответ дан 8 December 2019 в 02:26
поделиться

Вам не нужно сбрасывать ключи массива: вам нужно изменить способ обращения к нему.

Вместо того чтобы использовать цикл while и обращаться к элементам массива по индексу, вы должны использовать цикл foreach, который будет получать только элементы из массива :

foreach ($array as $key => $value) {
    // $key contains the index of the current element
    // $value contains the value of the current element
}
8
ответ дан 8 December 2019 в 02:26
поделиться

Спасибо Tatu.

Для смеха, я поделюсь с вами следующим идиотским хаком, который я использовал, пока ждал разумного ответа:

$badArray = array_diff($allData, $myData);

$string = implode(",",$badArray);

$dump = explode(",",$string);

$goodArray = $dump;

сработало. Я чувствовал себя грязным, но это сработало.

2
ответ дан 8 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: