Как очистить линейный массив на PHP?

220
08 июля 2018, 00:20

Маюсь парсингом, но в результате мне удалось получить массив только с нужными мне значениями (кириллица). Всё остальное - пустые значения. Как от них избавиться, сохранив адекватные ключи массива?

Array
(
    [1] => 2
    [2] => Тетерев
    [3] => Борщаговка
    [4] => 2
    [5] => 2
    [6] => 2
    [7] => Киев
    [8] => Коростень
    [9] => 2
    [10] => 2
    [11] => Малин
    [12] => Святошино
    [13] => 2
    [14] => 2
    [15] => Клавдиево
    [16] => Святошино
    [17] => 2
    [18] => 2
    [19] => Тетерев
    [20] => Киев
    [21] => 2
    [22] => 2
    [23] => Тетерев
    [24] => Борщаговка
    [25] => 2
    [26] => 2
    [27] => Бородянка
    [28] => Святошино
    [29] => 2
    [30] => 2
    [31] => Борщаговка
    [32] => Тетерев
    [33] => 2
    [34] => 2
    [35] => Коростень
    [36] => Киев
    [37] => 2
    [38] => 2
    [39] => Святошино
    [40] => Немешаево
    [41] => 2
    [42] => 2
    [43] => Немешаево
    [44] => Святошино
    [45] => 2
    [46] => 2
    [47] => Святошино
    [48] => Яблонец
    [49] => 2
    [50] => 2
    [51] => Святошино
    [52] => Коростень
    [53] => 2
    [54] => 2
    [55] => Немешаево
    [56] => Борщаговка
    [57] => 2
    [58] => 2
    [59] => Святошино
    [60] => Бородянка
    [61] => 2
    [62] => 2
    [63] => Святошино
    [64] => Клавдиево
    [65] => 2
    [66] => 2
    [67] => Клавдиево
    [68] => Борщаговка
    [69] => 2
    [70] => 2
    [71] => Святошино
    [72] => Клавдиево
    [73] => 2
    [74] => 2
    [75] => Тетерев
    [76] => Киев
    [77] => 2
    [78] => 2
    [79] => Борщаговка
    [80] => Тетерев
    [81] => 2
    [82] => 2
    [83] => Клавдиево
    [84] => Борщаговка
    [85] => 2
    [86] => 2
    [87] => Бородянка
    [88] => Борщаговка
    [89] => 2
    [90] => 2
    [91] => Киев
    [92] => Тетерев
    [93] => 2
    [94] => 2
    [95] => 2
    [96] => Коростень
    [97] => Киев
    [98] => 2
    [99] => 2
    [100] => Тетерев
    [101] => Киев
    [102] => 2
    [103] => 2
    [104] => Киев
    [105] => Коростень
    [106] => 2
    [107] => 2
    [108] => Киев
    [109] => Тетерев
    [110] => 2
    [111] => 2
    [112] => Тетерев
    [113] => Киев
    [114] => 2
    [115] => 2
    [116] => Коростень
    [117] => Борщаговка
    [118] => 2
    [119] => 2
    [120] => Яблонец
    [121] => Борщаговка
    [122] => 2
    [123] => 2
    [124] => Киев
    [125] => Тетерев
    [126] => 2
    [127] => 2
    [128] => 2
    [129] => Киев
    [130] => Коростень
    [131] => 2
    [132] => 2
    [133] => Тетерев
    [134] => Святошино
    [135] => 2
    [136] => 2
    [137] => Борщаговка
    [138] => Клавдиево
    [139] => 2
    [140] => 2
    [141] => Клавдиево
    [142] => Святошино
    [143] => 2
    [144] => 2
    [145] => Борщаговка
    [146] => Немешаево
    [147] => 2
    [148] => 2
    [149] => Немешаево
    [150] => Святошино
    [151] => 2
    [152] => 2
    [153] => Тетерев
    [154] => Киев
    [155] => 2
    [156] => 2
    [157] => Святошино
    [158] => Клавдиево
    [159] => 2
    [160] => 2
    [161] => Клавдиево
    [162] => Святошино
    [163] => 2
    [164] => 2
    [165] => Борщаговка
    [166] => Тетерев
    [167] => 2
    [168] => 2
    [169] => Святошино
    [170] => Немешаево
    [171] => 2
    [172] => 2
    [173] => Немешаево
    [174] => Борщаговка
    [175] => 2
    [176] => 2
    [177] => Немешаево
    [178] => Святошино
    [179] => 2
    [180] => 2
    [181] => Киев
    [182] => Коростень
    [183] => 2
    [184] => 2
    [185] => Борщаговка
    [186] => Тетерев
    [187] => 2
    [188] => 2
    [189] => Коростень
    [190] => Киев
    [191] => 2
    [192] => 2
    [193] => Тетерев
    [194] => Киев
    [195] => 2
    [196] => 2
    [197] => Киев
    [198] => Малин
    [199] => 2
    [200] => 2
    [201] => 2
    [202] => Коростень
    [203] => Борщаговка
    [204] => 2
)

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

for ($i=1; $i<=count($ex); $i++){
    if ($ex[$i] == "") {
        for ($i1=$i; $i1<=count($ex); $i1++){
            if ($ex[$i1] != ""){
                $ex[$i] = $ex[$i1];
                $ex[$i1] = "";
                break;
                }
            }
        }
    }
  print_r($ex);

Было нефиг делать, так что вот (сверху). Почти готово, остаётся только снова перебрать этот несчастный $ex, посчитать пробелы и вычесть их из размера массива. По крайней мере так бы было на Basic, Pascal и т. д.

foreach($times as $t){
  $i++;
  $ex[$i] = trim($t, "1234567890 /");
    $arr1 = str_split($t,4);
    if ($arr1[0] == "<img"){$ex[$i] = "";}
  }
for ($i=1; $i<=count($ex); $i++){
    if ($ex[$i] == "") {
        for ($i1=$i; $i1<=count($ex); $i1++){
            if ($ex[$i1] != ""){
                $ex[$i] = $ex[$i1];
                $ex[$i1] = "";
                break;
                }
            }
        }
    }
print_r($ex);
echo "\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\n";
array_filter($ex); // вот после этого не должно было остаться пустого !!!!
  print_r($ex);

Вот кусок, который и чистит этот массив от кучи лишнего, но вот вывод

Array
(
    [1] => Тетерев
    [2] => Борщаговка
    [3] => Киев
    [4] => Коростень
    [5] => Малин
    [6] => Святошино
    [7] => Клавдиево
    [8] => Святошино
    [9] => Тетерев
    [10] => Киев
    [11] => Тетерев
    [12] => Борщаговка
    [13] => Бородянка
    [14] => Святошино
    [15] => Борщаговка
    [16] => Тетерев
    [17] => Коростень
    [18] => Киев
    [19] => Святошино
    [20] => Немешаево
    [21] => Немешаево
    [22] => Святошино
    [23] => Святошино
    [24] => Яблонец
    [25] => Святошино
    [26] => Коростень
    [27] => Немешаево
    [28] => Борщаговка
    [29] => Святошино
    [30] => Бородянка
    [31] => Святошино
    [32] => Клавдиево
    [33] => Клавдиево
    [34] => Борщаговка
    [35] => Святошино
    [36] => Клавдиево
    [37] => Тетерев
    [38] => Киев
    [39] => Борщаговка
    [40] => Тетерев
    [41] => Клавдиево
    [42] => Борщаговка
    [43] => Бородянка
    [44] => Борщаговка
    [45] => Киев
    [46] => Тетерев
    [47] => Коростень
    [48] => Киев
    [49] => Тетерев
    [50] => Киев
    [51] => Киев
    [52] => Коростень
    [53] => Киев
    [54] => Тетерев
    [55] => Тетерев
    [56] => Киев
    [57] => Коростень
    [58] => Борщаговка
    [59] => Яблонец
    [60] => Борщаговка
    [61] => Киев
    [62] => Тетерев
    [63] => Киев
    [64] => Коростень
    [65] => Тетерев
    [66] => Святошино
    [67] => Борщаговка
    [68] => Клавдиево
    [69] => Клавдиево
    [70] => Святошино
    [71] => Борщаговка
    [72] => Немешаево
    [73] => Немешаево
    [74] => Святошино
    [75] => Тетерев
    [76] => Киев
    [77] => Святошино
    [78] => Клавдиево
    [79] => Клавдиево
    [80] => Святошино
    [81] => Борщаговка
    [82] => Тетерев
    [83] => Святошино
    [84] => Немешаево
    [85] => Немешаево
    [86] => Борщаговка
    [87] => Немешаево
    [88] => Святошино
    [89] => Киев
    [90] => Коростень
    [91] => Борщаговка
    [92] => Тетерев
    [93] => Коростень
    [94] => Киев
    [95] => Тетерев
    [96] => Киев
    [97] => Киев
    [98] => Малин
    [99] => Коростень
    [100] => Борщаговка
    [101] => 
    [102] => 
    [103] => 
    [104] => 
    [105] => 
    [106] => 
    [107] => 
    [108] => 
    [109] => 
    [110] => 
    [111] => 
    [112] => 
    [113] => 
    [114] => 
    [115] => 
    [116] => 
    [117] => 
    [118] => 
    [119] => 
    [120] => 
    [121] => 
    [122] => 
    [123] => 
    [124] => 
    [125] => 
    [126] => 
    [127] => 
    [128] => 
    [129] => 
    [130] => 
    [131] => 
    [132] => 
    [133] => 
    [134] => 
    [135] => 
    [136] => 
    [137] => 
    [138] => 
    [139] => 
    [140] => 
    [141] => 
    [142] => 
    [143] => 
    [144] => 
    [145] => 
    [146] => 
    [147] => 
    [148] => 
    [149] => 
    [150] => 
    [151] => 
    [152] => 
    [153] => 
    [154] => 
    [155] => 
    [156] => 
    [157] => 
    [158] => 
    [159] => 
    [160] => 
    [161] => 
    [162] => 
    [163] => 
    [164] => 
    [165] => 
    [166] => 
    [167] => 
    [168] => 
    [169] => 
    [170] => 
    [171] => 
    [172] => 
    [173] => 
    [174] => 
    [175] => 
    [176] => 
    [177] => 
    [178] => 
    [179] => 
    [180] => 
    [181] => 
    [182] => 
    [183] => 
    [184] => 
    [185] => 
    [186] => 
    [187] => 
    [188] => 
    [189] => 
    [190] => 
    [191] => 
    [192] => 
    [193] => 
    [194] => 
    [195] => 
    [196] => 
    [197] => 
    [198] => 
    [199] => 
    [200] => 
    [201] => 
    [202] => 
    [203] => 
    [204] => 
)
\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#
Array
(
    [1] => Тетерев
    [2] => Борщаговка
    [3] => Киев
    [4] => Коростень
    [5] => Малин
    [6] => Святошино
    [7] => Клавдиево
    [8] => Святошино
    [9] => Тетерев
    [10] => Киев
    [11] => Тетерев
    [12] => Борщаговка
    [13] => Бородянка
    [14] => Святошино
    [15] => Борщаговка
    [16] => Тетерев
    [17] => Коростень
    [18] => Киев
    [19] => Святошино
    [20] => Немешаево
    [21] => Немешаево
    [22] => Святошино
    [23] => Святошино
    [24] => Яблонец
    [25] => Святошино
    [26] => Коростень
    [27] => Немешаево
    [28] => Борщаговка
    [29] => Святошино
    [30] => Бородянка
    [31] => Святошино
    [32] => Клавдиево
    [33] => Клавдиево
    [34] => Борщаговка
    [35] => Святошино
    [36] => Клавдиево
    [37] => Тетерев
    [38] => Киев
    [39] => Борщаговка
    [40] => Тетерев
    [41] => Клавдиево
    [42] => Борщаговка
    [43] => Бородянка
    [44] => Борщаговка
    [45] => Киев
    [46] => Тетерев
    [47] => Коростень
    [48] => Киев
    [49] => Тетерев
    [50] => Киев
    [51] => Киев
    [52] => Коростень
    [53] => Киев
    [54] => Тетерев
    [55] => Тетерев
    [56] => Киев
    [57] => Коростень
    [58] => Борщаговка
    [59] => Яблонец
    [60] => Борщаговка
    [61] => Киев
    [62] => Тетерев
    [63] => Киев
    [64] => Коростень
    [65] => Тетерев
    [66] => Святошино
    [67] => Борщаговка
    [68] => Клавдиево
    [69] => Клавдиево
    [70] => Святошино
    [71] => Борщаговка
    [72] => Немешаево
    [73] => Немешаево
    [74] => Святошино
    [75] => Тетерев
    [76] => Киев
    [77] => Святошино
    [78] => Клавдиево
    [79] => Клавдиево
    [80] => Святошино
    [81] => Борщаговка
    [82] => Тетерев
    [83] => Святошино
    [84] => Немешаево
    [85] => Немешаево
    [86] => Борщаговка
    [87] => Немешаево
    [88] => Святошино
    [89] => Киев
    [90] => Коростень
    [91] => Борщаговка
    [92] => Тетерев
    [93] => Коростень
    [94] => Киев
    [95] => Тетерев
    [96] => Киев
    [97] => Киев
    [98] => Малин
    [99] => Коростень
    [100] => Борщаговка
    [101] => 
    [102] => 
    [103] => 
    [104] => 
    [105] => 
    [106] => 
    [107] => 
    [108] => 
    [109] => 
    [110] => 
    [111] => 
    [112] => 
    [113] => 
    [114] => 
    [115] => 
    [116] => 
    [117] => 
    [118] => 
    [119] => 
    [120] => 
    [121] => 
    [122] => 
    [123] => 
    [124] => 
    [125] => 
    [126] => 
    [127] => 
    [128] => 
    [129] => 
    [130] => 
    [131] => 
    [132] => 
    [133] => 
    [134] => 
    [135] => 
    [136] => 
    [137] => 
    [138] => 
    [139] => 
    [140] => 
    [141] => 
    [142] => 
    [143] => 
    [144] => 
    [145] => 
    [146] => 
    [147] => 
    [148] => 
    [149] => 
    [150] => 
    [151] => 
    [152] => 
    [153] => 
    [154] => 
    [155] => 
    [156] => 
    [157] => 
    [158] => 
    [159] => 
    [160] => 
    [161] => 
    [162] => 
    [163] => 
    [164] => 
    [165] => 
    [166] => 
    [167] => 
    [168] => 
    [169] => 
    [170] => 
    [171] => 
    [172] => 
    [173] => 
    [174] => 
    [175] => 
    [176] => 
    [177] => 
    [178] => 
    [179] => 
    [180] => 
    [181] => 
    [182] => 
    [183] => 
    [184] => 
    [185] => 
    [186] => 
    [187] => 
    [188] => 
    [189] => 
    [190] => 
    [191] => 
    [192] => 
    [193] => 
    [194] => 
    [195] => 
    [196] => 
    [197] => 
    [198] => 
    [199] => 
    [200] => 
    [201] => 
    [202] => 
    [203] => 
    [204] => 
)
Answer 1

Воспользуйтесь стандартной функцией array_filter:

$input = ['', 'Тетерев', 'Борщаговка', '', '', '', '', 'Киев'];
$result = array_filter($input);
print_r($result);

На выходе будет:

Array ( 
    [1] => Тетерев 
    [2] => Борщаговка 
    [7] => Киев 
)
Answer 2

код

<?php
    $array = array(0 => "a", 1 => "b", 2 => "c");
    unset($array[1]);
               //↑ Key which you want to delete
?>

Выход

Array (
    [0] => a
    [2] => c
)
READ ALSO
Ошибка Parse error: syntax error, unexpected &#39;echo&#39; (T_ECHO) on line 57

Ошибка Parse error: syntax error, unexpected 'echo' (T_ECHO) on line 57

У меня есть синтакситечская ошибка, которую я не знаю, как исправитьОшибка: Parse error: syntax error, unexpected 'echo' (T_ECHO) in your code on line 57

168
условие if работает некорректно

условие if работает некорректно

Это бот VKКод должен работать так: Я отправляю ему "1", он делает &flag = true и отправляет мне сообщение "Введите новую строку"

153
Формирование многомерного массива

Формирование многомерного массива

никак не могу правильно перезаписать массив

150