Я пытаюсь очистить массив от пустых значений, используя следующую функцию:
function remove_empty_cells($data) { $findthis = array("/\r\n/u", "/\n/u", "/\r/u", "/\s+/u", "~\x{00a0}~"); for($i=0; $i<count($data); $i++) { $data[$i] = preg_replace($findthis, " ", $data[$i]); $data[$i] = htmlspecialchars_decode(htmlspecialchars($data[$i], ENT_SUBSTITUTE, 'UTF-8')); if (empty($data[$i]) || mb_strlen($data[$i]) < strlen($data[$i]) || is_null($data[$i]) || $data[$i] = " " || $data[$i] = "" || $data[$i] == "0") { array_splice($data, $i, 1); };//end if };//end for return $data; };//end func
Пустые значения не исчезают, я не могу их идентифицировать.
данные:
array ( 0 => ' ', 1 => 'BEGIN:VCARD ', 2 => ' ', 3 => ' ', 4 => ' ', 5 => ' ', 6 => ' ', 7 => 'VERSION:2.1 ',
… может быть какая-то проблема с кодировкой или что-то в этом роде. Это не похоже на многобайтовые символы. Результат я получаю:
array ( 0 => 'BEGIN:VCARD ', 1 => ' ', 2 => ' ', 3 => 'VERSION:2.1 ',
…
Вы можете использовать функцию PHP array_filter()
чтобы удалить пустые значения с помощью функции обратного вызова, как array_filter()
ниже
<?php $array = array("sampe1", "\n ", " ", "sample2", null, "sample4", "rajesh", "suresh", "test", ""); $result = array_filter($array, function($v){ return trim($v); }); var_dump($result); $res = array_slice($result); var_dump($res); ?>
Это напечатает:
array(6) { [0]=> string(6) "sampe1" [3]=> string(7) "sample2" [5]=> string(7) "sample4" [6]=> string(6) "rajesh" [7]=> string(6) "suresh" [8]=> string(4) "test" }
array(6) { [0]=> string(6) "sampe1" [1]=> string(7) "sample2" [2]=> string(7) "sample4" [3]=> string(6) "rajesh" [4]=> string(6) "suresh" [5]=> string(4) "test" }
SYNTAX – массив array_filter (массив $ array [, callable $ callback [, int $ flag = 0]])
Не очень уверен, что вы сделали в этом коде, но вот что-то, что может удалить пустые элементы из php-массива
Фрагмент кода
<?php $array = array("apple", "", 2, null, -5, "orange", 10, false, ""); var_dump($array); echo "<br>"; // Filtering the array $result = array_filter($array); var_dump($result); ?>
Вы можете использовать функцию PHP array_filter()
чтобы удалить пустые значения
<?php $array = array("sampe1", "", "sample2", null, "sample4", "rajesh", "suresh", "test", ""); var_dump($array); echo "<hr/>"; $result = array_filter($array); var_dump($result); ?>
Это напечатает:
array(9) { [0]=> string(6) "sampe1" [1]=> string(0) "" [2]=> string(7) "sample2" [3]=> NULL [4]=> string(7) "sample4" [5]=> string(6) "rajesh" [6]=> string(6) "suresh" [7]=> string(4) "test" [8]=> string(0) "" }
array(6) { [0]=> string(6) "sampe1" [2]=> string(7) "sample2" [4]=> string(7) "sample4" [5]=> string(6) "rajesh" [6]=> string(6) "suresh" [7]=> string(4) "test"
Удаление пустых массивов в PHP, оставив отверстия в массиве.
Быстрый способ удаления пустых элементов из массива использует array_filter без функции обратного вызова. Это также удалит 0s (ноль).
$ myArray = array_filter ($ myArray);
Кроме того, array_diff позволяет вам решить, какие элементы сохранить. В следующем примере удаляются только пустые строки, но сохраняются 0
$ myArray = array_diff ($ myArray, array (''));
Удаление пустых слотов в PHP и сжатие массива.
Обе функции оставляют «пробелы», где раньше были пустые записи. Вы можете видеть это ниже, где индексы [1] и [3], а не [0] и [1].
$ myArray = array (0, 'red', '', 'blue'); print_r (array_filter ($ myArray)); Массив ([1] => 'красный' [3] => 'синий')
print_r (array_diff ($ myArray, array (''))); Массив ([0] => 0 [1] => 'красный' [3] => 'синий')
array_slice может удалить эти пробелы:
$ myArray = array (0, 'red', '', 'blue'); $ myArray = array_filter ($ myArray); print_r (array_slice ($ myArray, 0)); Массив ([0] => 'red' [1] => 'синий')
так что теперь для вашего cas, Example
$ arr = ['', 'BEGIN: VCARD', '', '', '', '', '', 'VERSION: 2.1']; // начальный массив print_r ($ arr); $ myArray = array_filter ($ arr); print_r (array_slice ($ myArray, 0));
inital output:
Массив ([0] => [1] => BEGIN: VCARD [2] => [3] => [4] => [5] => [6] => [7] => ВЕРСИЯ: 2.1)
окончательный выход:
Массив ([0] => BEGIN: VCARD [1] => ВЕРСИЯ: 2.1)