Есть массив $ar[1] = 1; $ar[2] = 0; $ar[6] = ""; $ar[8] = 1; $ar[9] = 0; Первое что я хочу сделать это убрать пустые строки типа " " но когда я убираю вместе с ними убираются и нули, а надо чтобы нули оставались. И как мне упорядочить индексы массива?
Может быть надо использовать === вместо == --- Добавлено --- PHP: <?php $ar[1] = 1; $ar[2] = 0; $ar[6] = ""; $ar[8] = 1; $ar[9] = 0; echo "Массив до\r\n"; var_dump($ar); $ar_f = array_filter($ar,'filterArray'); function filterArray($i){ if($i !== "")return true; return false; } echo "Массив после\r\n"; var_dump($ar_f); Код (Text): Массив до array(5) { [1]=> int(1) [2]=> int(0) [6]=> string(0) "" [8]=> int(1) [9]=> int(0) } Массив после array(4) { [1]=> int(1) [2]=> int(0) [8]=> int(1) [9]=> int(0) } Ну вот ещё вариант, сразу и упорядочим индексы, то есть не упорядочим, а переиндексуем PHP: <?php $ar[1] = 1; $ar[2] = 0; $ar[6] = ""; $ar[8] = 1; $ar[9] = 0; var_dump($ar); foreach($ar as $key => $i){ if($i !== ""){ $b[] = $i; } } var_dump($b); Код (Text): array(5) { [1]=> int(1) [2]=> int(0) [6]=> string(0) "" [8]=> int(1) [9]=> int(0) } array(4) { [0]=> int(1) [1]=> int(0) [2]=> int(1) [3]=> int(0) }
array_values() для слабаков или он нули стирает? [Updated] Ну ТС не говорил, что ключи перетирать нельзя. Так что этот вариант тоже имеет место быть. [Updated] Окей. Stackoverflow - первая ссылка. Фильтруем: PHP: $new_array = array_diff($old_array, array('')); Переиндексируем: PHP: $new_array = $array_values($new_array);