Подтвердить что ты не робот

В PHP, как я могу исправить недостающие ключи в массиве?

После использования array_unique массив без дубликатов значений будет удален. Тем не менее, похоже, что ключи также удалены, что оставляет пробелы в массиве с числовыми индексами (хотя это хорошо для ассоциативного массива). Если я повторяю использование цикла for, я должен учитывать отсутствующие индексы и просто копировать ключи в новый массив, но это кажется неуклюжим.

4b9b3361

Ответ 1

$foo = array_values($foo); будет повторно указывать массив для вас

Ответ 2

Вместо использования для циклов это звучит так, как будто вы должны использовать foreach loop. По-видимому, вы все равно не интересуетесь индексами, поскольку вы их перенумеруете.

Этот цикл:

for ($i = 0; $i < $loopSize; $i++)
{
process($myArray[$i]);
}

превращается в

foreach($myArray as $key=> $value)
{
    process($value);
    /** or process($myArray[$key]); */
}

or even more simply


foreach($myArray as $value)
{
    process($value);
}

Ответ 3

В немногих случаях, которые я пытался использовать вместо foreach, я вскоре пожалел об этом.

Этого всегда можно избежать, вы даже можете использовать foreach, но игнорируете значения и используете ключ, почти забывая, что его foreach вместо этого, но избегайте любых пробелов в ваших ключах и автоматически обходите свои ограничения без длина/мин/макс или что-то еще.

ех.

foreach($myArray as $key=>$val)
{
     myArray[$key] = myFunction(myArray[$key]);
}

Я особенно нашел это полезным с параллельными массивами.

$a = getA(); $b = getB();
foreach($a as $key=>val)
{
    $sql = "INSERT INTO table (field1, field2) VALUES ($a[$key], $b[$key])";
}