2010-03-04 3 views
5
(I'm a beginner) 

Мой скрипт использует стандартныйarray_diff & Перенумерация цифровые клавиши

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

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

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

Как сбросить цифровые клавиши массива? Порядок объектов в массиве не имеет значения.

ответ

25

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

$array = array_values($array); 
7

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

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

foreach ($array as $key => $value) { 
    // $key contains the index of the current element 
    // $value contains the value of the current element 
} 
+0

+1 для вас, потому что я обязательно буду использовать это знание в другом месте. Но чек должен пойти в Тату, чтобы попасть в яблочко. Спасибо, Паскаль. – Drew

+0

@ Андрей: приветствую :-) ;; Да, я знаю, что на самом деле я не отвечал на этот вопрос, но я думал, что это будет полезно в любом случае * (и я всегда использую foreach для перебора элементов массивов) * ;; и, поскольку я видел еще один ответ, уже говорил о 'array_values', я не поместил его в свою. –

+0

Я ценю, что вы нашли время ответить, я действительно это делаю. Я все еще чувствую, что мои ноги мокрые, и я узнаю, что «у меня есть действительно ударный молот», этап обучения программе. Так что еще раз благодарю вас за экспансивный и полезный толчок по пути к более подходящему дизайну кода. – Drew

2

Спасибо вам Tatu.

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

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

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

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

$goodArray = $dump; 

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