PHP: for ($i=0; $i<=count($files); $i++) { print "$files[$i]-"; } выдает: ---47--44-42-0-48--- а PHP: $files=array_unique($files); for ($i=0; $i<=count($files); $i++) { print "$files[$i]-"; } выдает: ---47--44-42- почему так?
Что-то свежо предание, но верится с трудом. 48 куда подевалось из последнего? Можно дамп исходного массива увидеть?
Значения приходят из формы. вот еще пример с тем же массивом PHP: $files=preg_split("/-/", $mass[filesold]); print_r($files); $filesnew=$mass[files]; print_r($filesnew); for ($i=0; $i<=count($filesnew); $i++) { $files[]=$filesnew[$i]; } print "<br>"; print_r($files); print "<br>"; sort ($files); print_r($files); print "<br>"; $result = array_unique($filesnew,SORT_LOCALE_STRING ); print_r($result); вывод: PHP: Array ( [0] => [1] => [2] => [3] => 47 [4] => ) Array ( [0] => 39 [1] => 0 [2] => 38 ) Array ( [0] => [1] => [2] => [3] => 47 [4] => [5] => 39 [6] => 0 [7] => 38 [8] => ) Array ( [0] => [1] => [2] => [3] => [4] => [5] => 0 [6] => 38 [7] => 39 [8] => 47 ) Array ( [0] => 39 [1] => 0 [2] => 38 )
первая строчка приходят элементы _ _ _ 47 _ первая строчка второй массив приходят элементы 39 0 38 вторая строчка я их объединяю в один массив _ _ _ 47 _ 39 0 38 _ третья строчка сортинг _ _ _ _ _ 0 38 39 47 далее сортюник должен убрать повторяющиеся элементы, т.е. по идеи должен остаться результат: _ 0 38 39 47 почему остается: 39 0 38??????
По идее конечно должен, если делать его к тому, что надо. А не к левой пятке. Эм, а что мы выводим-то?
не понял... :? Если вопрос в SORT_LOCALE_STRING то это я просто перебором пробовал всё, если написать PHP: $result = array_unique($filesnew); print_r($result); выводится то-же самое! Где я ошибся?
tcp65 Куда вы складываете все значения двух массивов? А к какому применяете array_unique? И что вы ожидаете увидеть после этого?
Нашёл! Спасибо огромное заработало правильно. Можно еще вопрос по этому примеру? Откуда после объединения массивов появляется лишний пустой элемент? правильно будет в цикле убрать знак "равно"? for ($i=0; $i<count($filesnew); $i++)
0 и "" скорее всего Массивы можно сливать при помощи + и array_merge (работают они по-разному посмотрите что вам больше подходит) PHP: <?php // так $firstarray += $secondarray; // или так $firstarray = array_merge($firstarray, $secondarray); зависит от того, что нужно получить. Для полного обхода массива я бы пользовался foreach() поскольку ключи не всегда могут быть цифровыми и бывают нужны.