#php #html
#php #HTML
Вопрос:
У меня есть массив, который выглядит следующим образом:
Array (
[0] => Array ( [denumireObiect] => Telefon )
[1] => Array ( [denumireObiect] => Laptop )
[2] => Array ( [denumireObiect] => Tableta )
[3] => Array ( [denumireObiect] => Obiect )
)
Я пытаюсь взять все эти слова и сделать их параметрами для <select>
тега.
Это код, который я использую для этого:
foreach ($result as $i) {
echo '<option value = ', $result[$i],'>', $result[$i], '</option>';
}
Этот абзац выдает Illegal offset type
ошибку.
Это var_dump($result)
результат.
array(4) {
[0]=> array(1) {
["denumireObiect"]=> string(7) "Telefon"
}
[1]=> array(1)
{ ["denumireObiect"]=> string(6) "Laptop" }
[2]=> array(1) {
["denumireObiect"]=> string(7) "Tableta"
}
[3]=> array(1) {
["denumireObiect"]=> string(6) "Obiect" }
}
...
Редактировать:
Я пытался сделать это так:
foreach ($result as $i => $val) {
echo '<option value = ', $i,'>', $i, '</option>';
}
и он возвращает 0, 1, 2, 3
Любая помощь приветствуется!
Комментарии:
1. является ли $result тем массивом, который вы упомянули, и не могли бы вы предоставить var_dump($result)? В вашем foreach вы должны иметь возможность доступа к $i без ссылки на массив $result. Но, не зная $result und $i, я не могу сказать вам, как именно
2. @j4g0 Я отредактировал сообщение. добавил
var_dump
результат и попробовал новый способ сделать это. Надеюсь, это поможет!3. У меня есть то, что кажется очень глупым вопросом, но это может быть интернационализация… работает ли использование в
,
качестве конкатенатора строк? AFAIK, вам нужно использовать.
( php.net/manual/en/language.operators.string.php ), но, может быть, это потому, что я нахожусь в США.echo "test","ing";
vsecho "test"."ing";
— я бы ожидал, что первый выдаст ошибку, а второй выведетtesting
.4. я не думаю, что это конкатенация, а скорее одно эхо, выводящее несколько строк. Сначала это тоже сбило меня с толку: D
5. вау, ПОКА. Я понятия не имел, что вы могли бы перечислить подобные вещи, которые будут повторены. Конечно же, это задокументировано на
echo
странице: php.net/manual/en/function.echo.php
Ответ №1:
@WOUNDEDStevenJones сделал хороший вывод. Я обновил свой код, чтобы сделать его более читаемым. Обратите внимание, что вам придется переименовать переменную $result в $results .
Поскольку каждый $result
из вашего кода представляет собой ассоциативный массив с одним и тем же "denumireObiect"
ключом, вы можете получить следующие значения:
foreach ($results as $result) {
echo "<option value="{$result['denumireObiect']}">{$result['denumireObiect']}</option>";
}
Если вам не нравится использовать интерполяцию, вы можете переформатировать оператор echo следующим образом:
echo '<option value="' . $result['denumireObiect'] . '">' . $result['denumireObiect'] . '</option>';
или используйте свой предыдущий формат 🙂
Комментарии:
1. Это выдает
Trying to access array offset on value of type int
ошибку.2. Я удалил => $val из foreach, нам это не нужно
3. Чтобы быть более понятным,
$i
обычно используется в качестве счетчика индекса в циклах (т. Е.for($i=0; $i<count($result); $i )
), Поэтому я бы рекомендовал сохранить этот стиль и либо записатьforeach ($result as $i => $val)
, а затем использовать$val['denumireObiect']
в цикле (или$result[$i]['denumireObiect']
, но в данном случае это кажется излишне глупым). Таким образом,$i
по сути, это все еще счетчик индексов, который является единственным, для чего следует использовать имена переменных с одним символом.