unserialize multiple array и echo, передавая более двух параметров методу arraycombine

ниже мой код, так как у меня есть несколько текстовых полей в моей форме из-за гостиничных номеров, поэтому я использовал функцию сериализации для ее сохранения. и я использую функцию unserialize для ее извлечения.

приведенный ниже код работал, когда только два параметра передавались массиву, но как он дает мне ошибку array_combine () ожидает ровно 2 параметра, 4 из которых приведен в C: \ xampp \ htdocs \ b2b \ view-booking.php в строке 84

какой альтернативный вариант я могу использовать для получения результата. есть ли другой способ сделать это. Я пробовал решения с 3 дней, размещенных повсюду. до сих пор нет решений.

$queryagent= mysqli_query($mysqli,"SELECT * FROM rmt_bookings where b_id='$id'"); while($rs=mysqli_fetch_array($queryagent)){ $b_hdest = unserialize($rs['b_hdest']); $b_hname = unserialize($rs['b_hname']); $b_hadd = unserialize($rs['b_hadd']); $b_hcextra = unserialize($rs['b_hcextra']); //....here i am just retriving 4 for short answers $hcnt=1; foreach (array_combine($b_hdest[0],$b_hname[0],$b_hadd[0],$b_hcextra[0]) as $var1=>$var2=>$var3=>$var4) { echo" <tr><td colspan='4'>Hotel Details ".$hcnt."</td></tr> <tr><td>Destination ".$var1."</td><td>Name ".$var2."</td><td>Address ".$var3."</td><td>Child Extra ".$var4."</td></tr>"; $hcnt++; } } 

Мне нужно, чтобы результат был следующим.

 .mytable table, td, th { border: 1px solid #ddd; text-align: left; } .mytable table { border-collapse: collapse; width: 100%; } .mytable th, td { padding: 15px; } <table class='mytable'> <tr><td colspan='4'>Hotel Details 1</td></tr> <tr><td>Destination ".$var1."</td><td>Name ".$var2."</td><td>Address ".$var3."</td><td>Child Extra ".$var4."</td></tr> <tr><td colspan='4'>Hotel Details 2</td></tr> <tr><td>Destination ".$var1."</td><td>Name ".$var2."</td><td>Address ".$var3."</td><td>Child Extra ".$var4."</td></tr> <tr><td colspan='4'>Hotel Details 3</td></tr> <tr><td>Destination ".$var1."</td><td>Name ".$var2."</td><td>Address ".$var3."</td><td>Child Extra ".$var4."</td></tr> </table> 

Solutions Collecting From Web of "unserialize multiple array и echo, передавая более двух параметров методу arraycombine"

попробуйте array_merege вместо array_combine

 $newarray = array_merege($b_hdest[0],$b_hname[0],$b_hadd[0],$b_hcextra[0]); print_r($newarray); foreach($newarray as $new){ print_r($new); } 

вы делаете ошибку в функции foreach … Чтобы объяснить, я отвечаю на ваш вопрос,

Прежде всего, вы должны использовать array_merge вместо array_combine, потому что array_merge объединяет массив, в то время как array_combine фактически делает первый массив ключевым и вторым массивом.

И foreach может извлекать только две вещи одновременно, например $var as $key => $value

полный код_snippet:

предполагая, что нам нужно напечатать одинаковый идентификатор такого же массива

 $b_h_dest = &$b_hdest;//reference foreach ( $b_h_dest as $key => $val ) { echo " <tr><td colspan='4'>Hotel Details ".$hcnt."</td></tr> <tr><td>Destination ".$b_hdest[$key]."</td><td>Name ".$b_hname[$key]."</td><td>Address ".$b_hadd[$key]." </td><td>Child Extra ".$b_hcextra[$key]."</td></tr>"; } 

EDIT1:

Теперь полностью понятный и длинный код, чтобы сделать все манипуляции типа с циклами, чтобы сделать вашу работу ::

 foreach($h_dest as $val) { $dest[] = $val; } foreach($h_name as $val) { $name[] = $val; } foreach($h_add as $val) { $add[] = $val; } foreach($h_cextra as $val) { $cextra[] = $val; } $count_dest = count($h_dest); $count_name = count($h_dest); $count_add = count($h_dest); $count_cextra = count($h_dest); if( $count_dest == $count_name && $count_name == $count_add && $count_add == $count_cextra && $count_cextra == $count_dest ){//for verification to disable error $count = $count_dest; //using any because all mached $count = $count - 1;//count starts with 1 while array starts with 0 for( $i = 0 ; $i <= $count; $i++ ){ $new_array_for_markup[] = array('dest' => $dest[$i], 'name' => $name[$i], 'add' => $add[$i], 'cextra' => $cextra[$i]); } } 

EDIT2 На самом деле я забываю упомянуть, как получить доступ к этому:

 $hcnt = 1; foreach ( $new_array_for_markup as $val ) { echo " <tr><td colspan='4'>Hotel Details ".$hcnt."</td></tr> <tr><td>Destination ".$val['dest']."</td><td>Name ".$val['name']."</td><td>Address ".$val['add']." </td><td>Child Extra ".$val['cextra']."</td></tr>"; $hcnt++; }