У меня есть html-форма с 3-мя селекторами:
a. Room -> 1, 2, 3, 4, 5, 6 b. Adults -> 1, 2, 3, 4, 5, 6 c. Childs -> 0, 1, 2, 3, 4, 5
Я хочу, чтобы php-массивы выглядели так: Пример 1 комната с 2 взрослыми
$rooms[] = array(array("paxType" => "Adult"), array("paxType" => "Adult"));
Пример 2 комнаты (одна комната с двумя взрослыми и вторая комната с двумя взрослыми и одним ребенком
$rooms[] = array(array("paxType" => "Adult"), array("paxType" => "Adult")); $rooms[] = array(array("paxType" => "Adult"), array("paxType" => "Adult"), array("paxType" =>"Child", "age" => 8));
Переменные, которые я получаю от формы, следующие:
$City= $_POST['City']; - text $CheckIN= $_POST['CheckIN']; - text (date) $CheckOUT= $_POST['CheckOUT']; - text (date) $Rooms= $_POST['Rooms']; - selector (1,2,3,4,5,6) $Adults= $_POST['Adults']; - selector (1,2,3,4,5,6) $Childs= $_POST['Childs']; - selector (0,1,2,3,4,5)
Форма отлично подходит для ввода текста и ввода даты. Как я могу перевести запрос формы html, чтобы попасть в a bove, похожий на массивы php. Спасибо за ваше время.
Весь код:
// create SOAP client object $client = new SoapClient("http://www.bookingassist.ro/test/book.wsdl", array('trace' => 1)); try { function addPaxType($type = null, $amount = 0) { $pax = array(); for ($i = 0; $i < amount; $i++) { array_push($pax, array('paxType' => $type)); } return $pax; } $RoomsLength = 1;//count($_POST['Rooms']); $Rooms = array(); //iterate over all rooms for ($i = 0; $i < $RoomsLength ; $i++) { $Rooms[$i] = array(); if ( count($Adults) > 0) { //use a function to add adults to room array_push($Rooms[$i] , addPaxType('Adults', count($Adults))); } if (count($Childs) > 0) { array_push($Rooms[$i], addPaxType('Childs', count($Childs))); } } $filters = array(); $filters[] = array("filterType" => "hotelStar", "filterValue" => "3", "4", "5"); $filters[] = array("filterType" => "resultLimit", "filterValue" => "7"); // make getAvailableHotel request (start search) $checkAvailability = $client->getAvailableHotel("gfdgdfgVNhTzA4MVZ3Y2hjTkt3QXNHSXZRYUZOb095Qg==", "RHMK", "2015-03-30", "2015-04-12", "EUR", "RO", "false", $rooms, $filters); } catch (SoapFault $exception) { echo $exception->getMessage(); exit; }
Вы можете получить параметр массива в методе ввода имени в сообщении формы html
<br />Room: <input type="text" **name="somearray[]"** required/></br>
После этого вы можете сделать что-то вроде этого
$ Номер = $ _ POST [ 'SomeArray'];
простите мой плохой английский!
Для этого вам нужен for lus
. Основываясь на данных на этой странице. Я не могу определить, в каких комнатах находятся дети и взрослые, а также возраст детей на основе предоставленных данных. Однако я могу показать вам попытку сделать такой массив.
function addPaxType($type = null, $amount = 0) { $pax = array(); for ($i = 0; $i < amount; $i++) { array_push($pax, array('paxType' => $type)); } return $pax; } $RoomsLength = count($_POST['Rooms']); $Rooms = array(); //iterate over all rooms for ($i = 0; $i < $RoomsLength ; $i++) { $Rooms[$i] = array(); if ( count($Adults) > 0) { //use a function to add adults to room array_push($Rooms[$i] , addPaxType('adult', count($Adults))); } if (count($Childs) > 0) { array_push($Rooms[$i], addPaxType('child', count($Childs))); } }
Когда выбраны две комнаты и два взрослых, это выведет:
$Rooms[0] --> [ [paxType => adult], [paxType => adult] ]; $Rooms[1] --> [ [paxType => adult], [paxType => adult] ];