Array to string conversion =)) реакция на echo $mass; А так все отлично работает. Нет Notice, Warning и Fatal error=))
Notiсe, но это если я пишу echo $mass; а так данные нормально передаются=) Как я понимаю эту ошибку- Преобразование массива в строку. Он должен нормально на echo $mass; реагировать?
А не, всё правильно. Переменная же при инициализации и присвоении значения должна принять тип того, что в неё суют. Тогда да, всё и должно работать. Добавлено спустя 1 минуту 24 секунды: Хотя я ещё раз подумал. А тогда-ка я верну своё сообщение: Добавлено спустя 44 секунды: Или вы данные в этом же цикле вайл используете?
Код (PHP): if ($result) { while($row = mysqli_fetch_assoc($result)) $mass = $row; } Я записал в переменную, которая теперь носит массив=)
нужно помнить, данные таки перезаписываются. Добавлено спустя 36 секунд: а вообще зачем так делать? что мешает работать напряму с $row ?
Всем привет. Не могу понять как мне вывести данные из массива. Выдает постоянно последнее значение, а мне нужно по порядку. От 1 и до последнего. Помогите, пожалуйста понять. Читал про while, про do while, foreach. Но не получается ими вывести так, как мне нужно. Код (PHP): foreach(select_menu() as $menu) $lang['menu'] = $menu['name_ru']; Выдаст последнее значение. select_menu - передаю на другую страницу через инклуд functions.php: Код (PHP): function select_menu(){ global $db; $result = mysqli_query($db, "SELECT * FROM menu") or die("Ошибка" . mysqli_error($db)); if ($result) { while($row = mysqli_fetch_assoc($result)) $mass[] = $row; } return $mass; }
всё верно выдает. как ты с данными работаешь так оно и работает. машина не виновата что ты не видишь желаемого результата и не можешь подобрать алгоритм решения. вот скажи мне, что делает этот ворыч в твоем понимании? что ты хочешь добиться таким алгоритмом?
Как я думаю, он в начале передает данные в переменную $menu и перебирает ее, как массив(т.е. она становится тем массивом, который возвращает функция), когда массив кончается, он выдает последнее полученное значение из него, не? Добавлено спустя 3 минуты 40 секунд: Я вот так еще делал=) Код (PHP): $key = 0; foreach(select_menu() as $key=>$menu) $key++; $lang['menu'] = $menu[$key]['name_ru'];
вынь голову из жопы. это все что хочется сказать про такой код. первая строка. объявили переменную кей, записали в нее целочисленный ноль. допустим ок. итерируем результат вызова функции селект_меню (тоже ок) как пары ключ+значение, помещая их в переменные кей и меню соответственно. эм. а зачем мы тогда объявляли кей строкой ранее? тут же перезаписывается значение. НУ Ё6АНАР0Т ДОПУСТИМ ОК. внимание на конец строки и следующую строку. ок. тело цикла - короткое. догадаешься почему? работа в цилке - инкремент значения переменной кей. ок. это той самой которая на каждой итерации получает новое значение. то есть суть цикла - разместить пое6отину в переменной кей и просто сделать инкремент этой пое6отины. никакой смысловой нагрузки похоже нет. четвертая и последняя строка. присвоить ключу меню массива содержащегося в переменной ланг значение ключа нейм_ру массива лежащего в ключе, соответствующем значению переменной кей, массива лежащего в переменной меню. итак. в после последней итерации цикла у нас в меню что-то есть. а кей после последней итерации на условную единицу больше чем был на входе в тело цикла. и это наверное даже как-то сочетается... вот такая у тебя программа. продолжай веселиться.
Круто описал, но это очевидно=) ибо это был полный говнокод=)) я не могу разобраться как правильно построить алгоритм для решения данной задачи. Вот в чем проблема.
Потому что его сначала надо написать на русском языке, а потом переписывать на php. Вот ты по-русски напиши, по шагам, чего тебе надо сделать. Но по шагам - а то люди обычно мне на это отвечают одной строчкой... И кстати, очевидно же, почему выдаёт последнее значение в варианте Неужели сам не видишь, что ты перезаписываешь каждый раз один и тот же ключ в массиве $lang?
ты не с той стороны зашел в программирование. у тебя уже за каким-то чёртом работа с субд но ты не можешь банально с массивом работать. ты не умеешь работать с примитивными данными. но уже считаешь что стоит заниматься более сложными вещами. поэтому ты и дальше будешь тратить время впустую. и унижаться тут в ожидании халявного решения. что в массивах-то? покажешь?
Я не прошу сделать за меня. Я прошу только понять работу с массивами. Думаю некоторое я понял, но не все: Код (PHP): foreach(select_menu() as $key=>$menu) $lang['menu'] = $key->$menu['name_ru'];
фырзд: итерируем результат вызова функции селект_меню (тоже ок) как пары ключ+значение, помещая их в переменные кей и меню соответственно. зигант: присвоить ключу меню массива содержащегося в переменной ланг значение ключа нейм_ру массива лежащего в свойстве меню объекта лежащего в переменной кей. я так и знал что ты толль. Добавлено спустя 1 минуту 11 секунд: почему у меня отрезается исходник из цитируемого сообщения? это что за херня?
Qumo, вы пытаетесь сделать самую смешную нелепость на php? Поскольку человек, хотя бы мельком прочитавший про массивы в php, такую чушь не напишет. Вся работа с массивами: https://php.net/manual/ru/language.types.array.php
Блин, ну вообще никак не доходит до меня. Foreach проходит один раз. Выдает значение, которое было на последней итерации цикла. Что же тогда сделать, чтобы не последнее, а все?
ты просто невнимательный. и мануал не читал еще, да. и ещё не знаешь что хочешь, да. у меня несколько теорий почему ты не обращаешь внимание на содержание моих постов. 1. ты - аутист. 2. ты - тролль. 3. я у тебя в зебре. 4. или её аналоге. 5. ты не умеешь читать на русском.
Я прочитал, ты на время посмотри. Я 6 часов на форуме сижу, и по твоему я не буду что-то читать?! По поводу того кода, я понял, что написал полную ахинею. Хорош меня уже всяко разно хаять. И без тебя есть кому настрой портить... Кажется "Эврика!" Это первый код: Код (PHP): $i=0; foreach (select_menu() as $i=>$menu[]) $lang[$i]['menu'] = $menu[$i]['name_ru']; А это то место, где у меня выводятся данный из него. Код (PHP): .$lang[$i]['menu']; $i++. Говнокод?
а можешь чуть более полный фрагмент кода показать? и не игнорируй мою просьбу показать содержимое обоих массивов.
Это код языка: Код (PHP): error_reporting(E_ALL); include_once ("admin/db.php"); include ("admin/functions.php"); foreach(select_pages() as $array) $lang = array(); $lang['title'] = $array['title_ru']; //Главное меню $i=0; foreach (select_menu() as $i=>$menu[]) $lang[$i]['menu'] = $menu[$i]['name_ru']; $lang['search'] = "Поиск"; $lang['butup'] = "Наверх"; $lang['butreviews'] = "Оставить отзыв"; Это код, где юзаю. В другом файле. Код (PHP): $i = 0; while($row = mysqli_fetch_assoc($result)){ echo '<li id='.$row['id'].' class="menu__item"><a href='.$row['url'].' class="menu__link">' .$lang[$i]['menu']; $i++; '</a></li>'; } Добавлено спустя 1 минуту 42 секунды: Var_dump: Код (PHP): rray(1) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } } array(2) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["name_ru"]=> string(14) "Галерея" ["name_en"]=> string(7) "Gallery" ["position"]=> string(1) "2" } } array(3) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["name_ru"]=> string(14) "Галерея" ["name_en"]=> string(7) "Gallery" ["position"]=> string(1) "2" } [2]=> array(4) { ["id"]=> string(1) "3" ["name_ru"]=> string(8) "Цены" ["name_en"]=> string(6) "Prices" ["position"]=> string(1) "3" } } array(4) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["name_ru"]=> string(14) "Галерея" ["name_en"]=> string(7) "Gallery" ["position"]=> string(1) "2" } [2]=> array(4) { ["id"]=> string(1) "3" ["name_ru"]=> string(8) "Цены" ["name_en"]=> string(6) "Prices" ["position"]=> string(1) "3" } [3]=> array(4) { ["id"]=> string(1) "4" ["name_ru"]=> string(16) "Обучение" ["name_en"]=> string(9) "Education" ["position"]=> string(1) "4" } } array(5) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["name_ru"]=> string(14) "Галерея" ["name_en"]=> string(7) "Gallery" ["position"]=> string(1) "2" } [2]=> array(4) { ["id"]=> string(1) "3" ["name_ru"]=> string(8) "Цены" ["name_en"]=> string(6) "Prices" ["position"]=> string(1) "3" } [3]=> array(4) { ["id"]=> string(1) "4" ["name_ru"]=> string(16) "Обучение" ["name_en"]=> string(9) "Education" ["position"]=> string(1) "4" } [4]=> array(4) { ["id"]=> string(1) "5" ["name_ru"]=> string(16) "Контакты" ["name_en"]=> string(8) "Contacts" ["position"]=> string(1) "5" } } array(6) { [0]=> array(4) { ["id"]=> string(1) "1" ["name_ru"]=> string(21) "Лучшие фото" ["name_en"]=> string(11) "Best photos" ["position"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["name_ru"]=> string(14) "Галерея" ["name_en"]=> string(7) "Gallery" ["position"]=> string(1) "2" } [2]=> array(4) { ["id"]=> string(1) "3" ["name_ru"]=> string(8) "Цены" ["name_en"]=> string(6) "Prices" ["position"]=> string(1) "3" } [3]=> array(4) { ["id"]=> string(1) "4" ["name_ru"]=> string(16) "Обучение" ["name_en"]=> string(9) "Education" ["position"]=> string(1) "4" } [4]=> array(4) { ["id"]=> string(1) "5" ["name_ru"]=> string(16) "Контакты" ["name_en"]=> string(8) "Contacts" ["position"]=> string(1) "5" } [5]=> array(4) { ["id"]=> string(1) "6" ["name_ru"]=> string(20) "Информация" ["name_en"]=> string(11) "Information" ["position"]=> string(1) "6" } }
Да, решена, но другая вылезла. Теперь последняя ссылка в меню везде плодится, где только есть a href. Добавлено спустя 2 минуты 36 секунд: Но это уже походу js делает. Добавлено спустя 26 минут 7 секунд: Как правильней будет в этой 5троке? Поставить запятую или точку после $lang[$i]['menu']? Код (PHP): echo 'class="menu__link">'.$lang[$i]['menu']. $i++;'</a></li>';