Вопрос № 94764: Доброе время суток, господа эксперты.
Столкнулся с проблемой: необходимо передать PHP-массив в JavaScript.
Что вы можете посоветовать ?
(желательно с примером)...
Вопрос № 94.764
Доброе время суток, господа эксперты.
Столкнулся с проблемой: необходимо передать PHP-массив в JavaScript.
Что вы можете посоветовать ?
(желательно с примером)
Отправлен: 11.07.2007, 13:36
Вопрос задал: Andrewfix (статус: Посетитель)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: XMF
Здравствуйте, Andrewfix!
--
Пример:
>
var n=new Array();
<?
foreach($array as $id=>$value) echo "n[$id] = '$value';
";
?>
</script>
Ответ отправил: XMF (статус: 7-ой класс)
Ответ отправлен: 11.07.2007, 13:41 Оценка за ответ: 4
Отвечает: Юркин Александр
Здравствуйте, Andrewfix!
Сделать это вообще не проблема.
>
var myarr=new Array(
<?
/// Тут делаем вывод из PHP массива
for($i=0;$i<count($phparray);$i++)
{
if($i>0){echo",";}
echo "'$phparray[$i]'";
}
?>
);
</script>
На выхлопе получим вот это:
>
var myarr=new Array('Один','Два','Три','Четыре');
</script>
Ответ отправил: Юркин Александр (статус: 1-ый класс)
Ответ отправлен: 11.07.2007, 13:49 Оценка за ответ: 5 Комментарий оценки: Отлично! Кратко и очень толково!
Отвечает: Бородин Александр Олегович
Здравствуйте, Andrewfix!
Вариантов может быть несколько... Если PHP-массив уже сформирован, то можно написать что-либо типа:
>
massiv["id1"] = <?=$array["id1"]?>;
massiv["id2"] = <?=$array["id2"]?>;
//....... и т. д.
</script>
Попробуйте так, должно получиться. Правда, передать PHP-массив в цикл JavaScript так уже не выйдет, ручками придется делать.
--------- Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 3-ий класс)
Ответ отправлен: 11.07.2007, 13:58 Оценка за ответ: 3
Отвечает: Flynn
Здравствуйте, Andrewfix!
Можно сгенерировать ява-массив как текст, и просто вывести его в браузер в нужном месте.
implode соединяет значения из массива temp в одну строку чреез указанную нами запятую.
В приведенном примере будет одномерный массив типа JSarr[0] =1; JSarr[1]=2 Если требуется сохранение ключей из РНР вывод массива из в браузер немного усложняется чтобы получить желаемый результат.
Приложение:
Ответ отправил: Flynn (статус: 1-ый класс)
Ответ отправлен: 11.07.2007, 14:01
пропишите в JavaScript что-то типа:
var a=<?=$a?>
--------- Среди людей есть такие, которые говорят: "Мы уверовали в Бога и в Последний день". Однако они суть неверующие.
Ответ отправил: Шахгусейнов Азиз (статус: 4-ый класс)
Ответ отправлен: 11.07.2007, 14:09
Отвечает: Шпилевский Евгений Васильевич
Здравствуйте, Andrewfix!
$tmp = ">var a = new Array();";
for ($i=0; $i<=count($a); $i++)
{
$tmp .= "a[$i]=$a[$i];";
}
$tmp .= "</script>
echo $tmp;
не тестировал, но думаю мысль понятна так что разберетесь даже с багами
Отвечает: Киряков Александр Ивановичч
Здравствуйте, Andrewfix!
Я могу посоветывать(если передача массива идет при загрузке страници) :
echo ' type="text/javascript">
$array=array(''.implode('','',$array_php).'');
//текст javascript'a
</script>';
или при помощи ajax.