Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
21 / 21 / 10
Регистрация: 13.08.2013
Сообщений: 295

Неправильно работает вывод массива через foreach

14.04.2016, 11:51. Показов 2226. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив $childResult (print_r):
PHP
1
2
3
4
Array ( 
[0] => Array ( [id] => 4 [title] => Steam [total_topics] => 0 [description] => [parent] => 1 ) 
[1] => Array ( [id] => 5 [title] => Uplay [total_topics] => 0 [description] => [parent] => 1 ) 
)
Код для вывода результатов:
PHP
1
2
3
4
5
6
7
8
foreach ($childResult as $key=>$value) {
            if ($childResult[$key]['id'] = $cat_id) {
                echo '<a class="selected" href="index.php?cat_id='.$childResult[$key]['id'].'">'.$childResult[$key]['title'].'</a>';
            }
            else {
                echo '<a href="index.php?cat_id='.$childResult[$key]['id'].'">'.$childResult[$key]['title'].'</a>';
            }
        }

Получаю вывод:
HTML5
1
2
<a class="selected" href="index.php?cat_id=1">Steam</a>
<a class="selected" href="index.php?cat_id=1">Uplay</a>
$cat_id = текущий ID GET параметра 'cat_id'

Так как я нахожусь на странице index.php?cat_id=1, то класс selected не должен присваиваться этим ссылкам.
Как должно выводиться:
HTML]<a href="index.php?cat_id=4">Steam</a>
<a href="index.php?cat_id=5">Uplay</a>[/HTML]


Что я делаю не так?
Пробовал вот так: (тоже не работает)
PHP
1
2
3
4
5
6
7
8
9
        foreach ($childResult as $key=>$value) {
            if ($childResult[$i]['id'] = $cat_id) {
                echo '<a class="selected" href="index.php?cat_id='.$childResult[$i]['id'].'">'.$childResult[$i]['title'].'</a>';
            }
            else {
                echo '<a href="index.php?cat_id='.$childResult[$i]['id'].'">'.$childResult[$i]['title'].'</a>';
            }
            $i++;
        }
Причём $childResult[$i]['title'] выводится корректно, а $childResult[$i]['id'] - нет
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2016, 11:51
Ответы с готовыми решениями:

Вывод данных из файла, реализация через класс работает неправильно
P.S плохо с русским Вот код решил использовать знание на проверку но вот толька через класс вывод инфо не хочет #include...

Вывод из БД через foreach
Добрый день. Есть следующий код: &lt;?php if (isset($_SESSION) ) : ?&gt; &lt;li&gt; &lt;?php $sql = R::getAll(&quot;SELECT * FROM...

Вывод всех картинок через foreach
Здравствуйте! Есть код: Выборка всех картинок отдельно: $oImages = $this-&gt;controller-&gt;itemImages(); $aImages = array(); ...

3
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
14.04.2016, 12:15
Лучший ответ Сообщение было отмечено grisha2217 как решение

Решение

if ($childResult[$key]['id'] = $cat_id) {

У вас оператор присваивания стоит в условии. А должен быть оператор сравнения.

$childResult[$key]['id'] == $cat_id

И почему вы используете $childResult[$key] вместо $value?
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
14.04.2016, 12:17
PHP
1
$childResult[$i]['id'] = $cat_id
?

Добавлено через 1 минуту
Сравнение в РНР двумя знаками «равно» обозначается.
0
21 / 21 / 10
Регистрация: 13.08.2013
Сообщений: 295
14.04.2016, 12:24  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
$childResult[$key]['id'] == $cat_id
Да, косяк. Суть не изменилась

Добавлено через 57 секунд
Цитата Сообщение от sad67man Посмотреть сообщение
И почему вы используете $childResult[$key] вместо $value?
Через $value вообще не работает. Рассмотрите код с использованием $i

Добавлено через 1 минуту
upd: вся проблема решилась после изменения = на ==
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2016, 12:24
Помогаю со студенческими работами здесь

Вывод полей наследников через foreach из List
Или не обязательно через foreach. Доброго дня! У меня все плохо с основами, потому кидайте, пожалуйста, свои помидоры. Вопрос в...

Вывод материалов из одной категории через цикл foreach
Добрый день, реализован метод для вывода материалов из базы данных с помощью цикла foreаch в таком ввиде &lt;?php foreach ( $results as...

Не работает вывод двумерного массива через метод класса
При обращении к методу getStringSymbol и getAllStrings прога вылетает, помогите пожалуйста #include &quot;stdafx.h&quot; #include...

Вывод вложенного массива foreach
Добрый вечер пытаюсь сделать вывод вложенного массива, подскажите где ошибка &lt;?php $usersInd = array('1' =&gt;...

Вывод двумерного массива циклом foreach
Почему двумерный массив через цикл foreach выводится на экран в одну строку? Как сделать через foreach в виде таблицы? (чтобы не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru