ниже мой код, так как у меня есть несколько текстовых полей в моей форме из-за гостиничных номеров, поэтому я использовал функцию сериализации для ее сохранения. и я использую функцию 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>
попробуйте 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++; }