[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Массив из динамической переменной
Denhell
Имеется переменная массив $$ch. Функция print_r работает правильно и выводит следующее:
Array ( [0] => Asus [1] => Dell [2] => Toshiba )

Но если загонять в цикл и выводить по элементам, то ничего не выводит.
for ($k=0;$k<count($$ch);$k++) { echo $$ch[$k]."<br>"; }

Почему так происходит? Или надо как-то преобразовать этот массив? Подскажите пожалуйста.



Спустя 3 минуты, 42 секунды (20.02.2011 - 19:07) quickxyan написал(а):
может попробуй через foreach или while

Спустя 24 секунды (20.02.2011 - 19:08) Dron19 написал(а):
$$ch - это символьная ссылка?

Спустя 3 минуты, 36 секунд (20.02.2011 - 19:11) Dron19 написал(а):
foreach($$ch as $k) {
echo $k."<br>";
}

Спустя 38 секунд (20.02.2011 - 19:12) Dron19 написал(а):
вместо цикла for поставь

Спустя 16 минут, 47 секунд (20.02.2011 - 19:29) Denhell написал(а):
Цитата
foreach($$ch as $k) {
echo $k."<br>";
}

Так вот что выдает
Asus
Dell
Toshiba

Warning: Invalid argument supplied for foreach() in W:\home\localhost\www\hainet\article.php on line 66

Warning: Invalid argument supplied for foreach() in W:\home\localhost\www\hainet\article.php on line 66

Что за ошибки такие? На 66 строке находится
foreach($$ch as $k) {

Спустя 3 минуты, 14 секунд (20.02.2011 - 19:32) Dron19 написал(а):
кинь сюда весь свой код

Спустя 1 минута, 33 секунды (20.02.2011 - 19:34) Dron19 написал(а):
я на 10 минут отойду от компа, приду, если еще не помогут, помогу biggrin.gif

Спустя 7 минут, 10 секунд (20.02.2011 - 19:41) Invis1ble написал(а):
Denhell
Цитата
Warning: Invalid argument supplied for foreach() in W:\home\localhost\www\hainet\article.php on line 66

ошибки выдает, изза того что какая-то переменная, которую ты передеаешь в цикл - не массив
нужно делать проверку, например такую:
if (is_array($$ch))
foreach ($$ch as $v)
echo $v . '<br />';

Спустя 3 минуты, 9 секунд (20.02.2011 - 19:44) T1grOK написал(а):
Это из-за вашей-массивно-символьной ссылки. Делайте как нужно и никаких ошибок не будет

foreach($ch as $k) {
echo $k."<br>";
}

Спустя 3 минуты, 27 секунд (20.02.2011 - 19:47) Dron19 написал(а):
я создал символьную ссылку от массива и все работает.
T1grOK - символьная ссылка тут не при чем
Вот так надо создавать символьные ссылки и применять.

$arr = array('toshiba','dell','asus');
$ch = "arr";
foreach($$ch as $k) {
echo $k."<br>";
}

Спустя 45 секунд (20.02.2011 - 19:48) Dron19 написал(а):
или ты просто случайно добавил лишний $

Спустя 14 минут, 55 секунд (20.02.2011 - 20:03) Denhell написал(а):
Invis1ble
Спасибо, с проверкой ошибок нет
if (is_array($$ch))
foreach ($$ch as $v)
echo $v . '<br />';
И выдает как надо
Asus
Dell
Toshiba

Dron19

Благодарю за помощь. Но знак $ я не случайно поставил. Дело в том, что в на одной странице php я создаю форму и там формирую произвольные переменные, название которых может быть различно. Например $filter_1; $filter_7 и они являются массивами. Затем, чтобы методом post передать я использую массив $name_filters, в котором хранятся названия переменных (не значения).

$name_filters = $_POST['name_filters']; // преедаю названия переменных
$name_filters = explode(", ",$name_filters); //преобразую строку в массив

for ($i=0;$i<count($name_filters); $i++) {
$ch = $name_filters[$i]; //имя i-й переменной
$$ch = $_POST[$ch]; // вытягиваю через post i-ю переменную

if (is_array($$ch))
foreach ($$ch as $v)
echo $v . '<br />';

}

Спустя 4 минуты, 8 секунд (20.02.2011 - 20:07) Invis1ble написал(а):
Denhell
Цитата
на одной странице php я создаю форму и там формирую произвольные переменные, название которых может быть различно. Например $filter_1; $filter_7 и они являются массивами. Затем, чтобы методом post передать я использую массив $name_filters, в котором хранятся названия переменных (не значения).

имхо, кривая реализация. передавай просто данные в массиве, а потом работай непосредственно с этим массивом

Спустя 1 час, 23 минуты, 17 секунд (20.02.2011 - 21:30) Dron19 написал(а):
$$ch = $_POST[$ch]; - $$ - это по синтаксису должно означать символьную ссылку, которую если изменить, то и изменится переменная на которую указывает эта ссылка

Спустя 12 часов, 21 минута, 28 секунд (21.02.2011 - 09:52) linker написал(а):
От так
$ch = &$_POST[$ch];
это делается.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.