Как получить значение массива после взрыва?

Я передал значение из одной страницы в другую в массиве. Я могу извлечь первые два vars взорваться, но я не могу получить третье значение, которое формируется в массиве.

Это мой массив:

$user_rate=$_POST['user_rate'];//15000|ss|Array list($total,$promo,$rate)=explode("|",$user_rate); 

Поэтому я получаю:

 $total=15000; $promo=ss; $rate=Array; 

В то время как массив поступает с предыдущей страницы, циклируя дневную скорость и помещая в массив. И мне нужно знать, каков каждый курс, поэтому я написал:

 foreach($rate as $val){ echo "$val<br>"; } 

Но это ничего не показывает. Как я могу это получить?

Обновлено: это код перед отправкой var.

 echo " <tr> <td align=\"right\" colspan=\"3\">Total</td> <td align=\"right\"><label for=\"promo_3\"><input type=\"radio\" name=\"user_rate\" id=\"promo_3\" value=\"$ss_total|ss|$cost_ss\" />&nbsp;<u><b>".number_format($ss_total)."</b></u></label></td> <td align=\"right\"><label for=\"promo_1\"><input type=\"radio\" name=\"user_rate\" id=\"promo_1\" value=\"$net_total|nc|$cost_nr\" checked/>&nbsp;<u><b>".number_format($net_total)."</b></u></label></td> </tr>"; 

И ЭТОТ ФОРМАТ ЗНАЧЕНИЯ НЕ МОЖЕТ ИЗМЕНИТЬ, ЧТО Я НУЖДАЮСЬ ЭТО ДЛЯ ПОСЛЕДНЕГО ЭКСТРАКТА JAVASCRIPT

В то время как $ cost_ss и $ cost_nr получены из цикла запросов к базе данных.

 while($rec=mysql_fetch_array($result)){ $cost_ss[]=$rec['rate_ss']; $cost_nr[]=$rec['rate_nr']; } в while($rec=mysql_fetch_array($result)){ $cost_ss[]=$rec['rate_ss']; $cost_nr[]=$rec['rate_nr']; } 

Solutions Collecting From Web of "Как получить значение массива после взрыва?"

вероятно, это будет неправильный $user_rate=$_POST['user_rate'];//15000|ss|Array

вы можете использовать serialize / unserialize для массива

Вы можете serialize параметры массива, прежде чем передавать его. Затем unserialize их на 2-й странице.

 $rate = serialize($rate); 

На вашей второй странице перед запуском через цикл:

 $rate = unserialize($rate); 

вы можете кодировать значения на странице как

 implode("|", array($total, $promo, implode(",",$rate)); 

Затем декодируйте его с помощью

 list($total, $promo, $rates) = explode("|", $_POST["user_rate"]); $rates = explode(",", $rates); 

Использование serialize определенно является ключом к тому, чтобы это работало, но base64_encode () – идеальный способ сделать его менее запутанным. Когда вы используете сериализацию, вы получаете точки с запятой, запятые, двойные кавычки, одинарные кавычки и несколько других символов, которые могут вызвать проблемы, когда вы передаете их в свой скрипт, который его собирает.

Например, после сериализации массива вы получите это, например, Sidux

 a:3:{i:0;s:4:"toto";i:1;s:4:"titi";i:2;a:2:{i:0;s:4:"coco";i:1;s:4:"cici";}} 

Когда вы добавите base64_encode в микс, вам будет легче работать.

 YTozOntpOjA7czo0OiJ0b3RvIjtpOjE7czo0OiJ0aXRpIjtpOjI7YToyOntpOjA7czo0OiJjb2NvIjtpOjE7czo0OiJjaWNpIjt9fQ== 

Благодаря этому вы можете легко отправлять и получать сохраненный массив без обрезки, добавления косых черт и т. Д.

Предполагая, что вы отправляете свои данные таким образом, ваш новый код будет выглядеть так

 $user_rate=$_POST['user_rate'];//15000|ss|Array list($total,$promo,$rate)=explode("|",$user_rate); $rate = unserialize( base64_decode($rate) ); 

Теперь $rate – это функциональный массив

хорошо, много ответов и не повезло … я попробую еще раз:

у вас есть массив $ rate перед отправкой формы:

 foreach($rate as $val){ echo "$val<br>"; } 

и вы хотите добавить $ ss_total и строку «ss» и отправить его, чтобы вам нужно:

 $newarray = array('rate'=>$rate, 'type'=>'ss', 'ss_total'=>$ss_total); // now you have a 2-dimensional array ($newarray) // the next step is to prepare it for form-submitting (serialize and base64_encode): $stringvalue = base64_encode(serialize($newarray)); // ok, now you are able to submit it as radio-field-value: echo '<input type="radio" name="user_rate" id="promo_3" value="'.$stringvalue.'" />'; 

когда форма отправляется, вы получаете сериализованную и закодированную строку в $ _POST ['user_rate'], вы можете сделать эхо, если хотите посмотреть, как это выглядит.

Теперь вам нужно base64_decode и unserialize:

 $arr = unserialize(base64_decode($_POST['user_rate'])); 

и теперь у вас есть полный доступ к вашему массиву:

 echo $arr['type']."<br />"; echo $arr['ss_total']."<br />"; echo $arr['rate']['index_of_rate']; // i dont know the keys of rate array... 

доступ $ arr в javascript:

 echo "<script>"; echo "var jsarr = ".json_encode($arr).";\n"; echo "alert(jsarr.ss_total);\n"; echo "</script>"; 

Надеюсь, теперь ты получишь это.

Привет, я думаю, что я понимаю, что вы проблема, когда вы passe и массивы из строки пытаетесь «сериализовать» его и «unserialize» на другой странице, например:

 $array = serialize(array('toto', 'titi', array('coco', 'cici'))); 

даст вам нечто подобное

a:3:{i:0;s:4:"toto";i:1;s:4:"titi";i:2;a:2:{i:0;s:4:"coco";i:1;s:4:"cici";}}

и если вы используете unserialize($array); он даст вам ваш массив назад