(I'm a beginner)
Мой сценарий использует стандарт
$c = 0;
$t = count($array);
while ($c < $t) {
$blah = $array[$c];
++$c;
}
скорее экстенсивно. Но я просто столкнулся с ситуацией, где мне также нужно array_diff
и это повреждает это все к черту, потому что теперь числовые ключи имеют разрывы. Я добираюсь Undefined offset
ошибки повсеместно.
Как я сбрасываю числовые ключи массива? Порядок объектов в массиве не важен.
Чтобы сбросить ключи, вы можете использовать array_values ()
:
$array = array_values($array);
Вам не нужно сбрасывать ключи массива: вам нужно изменить способ обращения к нему.
Вместо того чтобы использовать цикл while
и обращаться к элементам массива по индексу, вы должны использовать цикл foreach, который будет получать только элементы из массива :
foreach ($array as $key => $value) {
// $key contains the index of the current element
// $value contains the value of the current element
}
Спасибо Tatu.
Для смеха, я поделюсь с вами следующим идиотским хаком, который я использовал, пока ждал разумного ответа:
$badArray = array_diff($allData, $myData);
$string = implode(",",$badArray);
$dump = explode(",",$string);
$goodArray = $dump;
сработало. Я чувствовал себя грязным, но это сработало.