PHP вывод массива

208
22 марта 2022, 18:20

Есть массив $data = array(). В него записываются данные array_push($data, data).

Т.к. data может повторяться, создаётся новый массив с уникальными data.

$uniq_data = array_unique($data);

После чего я хочу вывести этот массив. Делаю я это так :

for($i=0; $i<count($uniq_data); $i++){
}

Выводит только первые 2 элемента массива. После вывода массива через print_r($uniq_data); вижу что ключи элементов не идут по порядку (0,1,2,3...), видимо ключи копируются из прошлого массива(0,4,28,392...).

Я не понимаю как это работает. По идее оно должно вывести все элементы, но выводит только те, где ключ элемента массива меньше числа count($uniq_data). Почему так? И как мне вывести все элементы?

Answer 1

Самое простое после array_unique для сортировки ключей с нуля:

$array = array_values($array);

array_values() возвращает массив со всеми элементами массива array. Она также заново индексирует возвращаемый массив числовыми индексами. https://www.php.net/manual/ru/function.array-values.php

Answer 2

Функция array_unique() удаляет повторяющиеся элементы, но не сбрасывает их индексы. Соответственно, если у вас 4 элемента в массиве, но их индексы равны, например: 0, 4, 28, 392, то в цикле for выведется только первый элемент.
Чтобы вывести все элементы воспользуйтесь циклом перебора массива foreach:

foreach ($uniq_data as $key => $data) {
    //..
}

Подробная информация в документации

READ ALSO
Передача информации из component в app.vue

Передача информации из component в app.vue

Подскажите , при клике по кнопке которая находится в компоненте должен меняться state в appvue

141
Нужно заменить каждую букву слова, которое находится в массиве на * JS

Нужно заменить каждую букву слова, которое находится в массиве на * JS

При нажатии на кнопку cenzor нужно заменить каждую букву слова, которое находится в массиве на "*"Не понимаю как нужно поставить условие

96
Как встроить js код (javascript) в андроид

Как встроить js код (javascript) в андроид

Есть той сервис как Вебвизор у ЯндексМетрики, дан код как на картинке, и его нужно вставить в WebView в программеВидел однажды такую реализацию...

129