PDA

Просмотр полной версии : Передача массива в PHP


vivado
23.06.2011, 14:41
Всем привет, подскажите как правильно передать массив с данными из flash например в php и возможно ли это вообще? Пытаюсь передать так:


System.useCodepage = true;
var massiv:Array = new Array("П","Р","И","В","Е","Т");
...
loadVariables("send.php", "", "POST");


В файле php прописано:

<?php
$massiv=$_POST['massiv'];
$c_massiv=count($massiv); // получаем в $c_massiv количество элементов массива
echo "<h1>$c_massiv</h1>"; // отладка: выводим в браузер количество элементов массива
for ($i=0;$i<$c_massiv;$i++)
echo "<h2>".$massiv[$i]."</h2>"; // выводим в браузер каждый элемент массива, начиная с нулевого
?>


возвращает "0" в чем проблема?

mooncar
23.06.2011, 14:52
возвращает "0" в чем проблема?
Проблема в том, что массив Action Script и массив PHP - это разные вещи. Разные среды.
В PHP может прийти строка, файл, объект сторонней программной среды туда прийти не может. Исходите из этого.

Я бы порекомендовал передавать XML-строку, а в PHP парсить ее, например, с помощью класса SimpleXML.
Это конечно, если у вас ожидается большой объем данных.
А так, передавайте отдельные переменные и их значение, помня о том, что для PHP и имя переменной и ее значение - всегда строковый тип данных.

Да, используйте, разумеется, класс LoadVars, метод sendAndLoad. Примеры в хелпе.

vivado
23.06.2011, 14:57
Проблема в том, что массив Action Script и массив PHP - это разные вещи.
В PHP всегда приходит строка, объект туда прийти не может.

Да хоть чтонибудь бы пришло там найду способ распарсить )))
А как туда кстати масив строкой зафигачить, ввести новую переменную во влеш и дать ей значение, чтото типа.

MassivStrokoi=massiv[0]+massiv[1]+massiv[2]...massiv[i]


или я не туда копаю?

Кстати можно поподробнее про то как XML строку передать из flash?

mooncar
23.06.2011, 14:58
или я не туда копаю?
Не туда.
Открывайте в хелпе примеры по sendAndLoad().
Забудьте про "массив" при подготовке данных для передачи.
Что-то типа:
var send_lv:LoadVars = new LoadVars();
send_lv.var1_0 = massiv[0];
send_lv.var1_1 = massiv[1];
//и тд.
а в PHP получаете, и, если хотите, собираете уже там массив.

Поизучайте XML в AS и PHP, не пожалеете - это решение что надо.

vivado
23.06.2011, 18:16
Спасибо большое mooncar, буду изучать...
Пока решил проблему так, может кому пригодиться как вариант.

System.useCodepage = true;
var MyMassiv:Array = new Array("А","Б","В","Г","Д","Е"); //Простенький массив
massiv = String(MyMassiv); //Перевожу массив в строку
...
loadVariables("send.php", "", "POST");


в PHP все принимается...