Код PHP Array возвращает данные json, как получить конкретные данные из массива json - PullRequest
1 голос
/ 10 мая 2019

У меня есть массив, значения которого как обычно в PHP. Но в поле массива есть данные json, и я не могу десериализовать данные для получения определенного элемента.

Массив имеет поле с именем "__viewstate", в котором находятся данные, которые я хочу, данные, которые я хочу получить, это число "+46736506234", но я не могу десериализовать данные, все, что я получаю, это bool false, но Я думаю, потому что это неправильно оформлено.

Как мне поступить, чтобы получить номер телефона из этих данных?:

Я использую var_dump($this), чтобы получить опубликованный контент на странице подтверждения, var_dump($_POST) дает тот же массив.

["__viewstate"]=> string(974) "a:4:{i:0;a:1:{s:9:\"projectId\";i:4;}i:1;a:15:{s:14:\"availabilityId\";i:6;s:13:\"availableDate\";s:10:\"2019-05-29\";s:7:\"endDate\";s:10:\"2019-05-29\";s:9:\"startTime\";s:4:\"2569\";s:7:\"endTime\";N;s:13:\"startTimeslot\";s:8:\"10:30 am\";s:11:\"endTimeslot\";s:0:\"\";s:5:\"seats\";i:4;s:12:\"seatsMinimum\";i:1;s:12:\"seatsMaximum\";i:10;s:13:\"dynamicFields\";a:0:{}s:8:\"timezone\";s:16:\"Europe/Stockholm\";s:15:\"_availabilityId\";N;s:14:\"_availableDate\";N;s:8:\"_endDate\";N;}i:6;a:1:{s:9:\"requestId\";s:41:\"calendarista_req_1557482130_5cd54a92b61bd\";}i:4;a:9:{s:12:\"formelements\";a:1:{i:0;a:5:{s:9:\"projectId\";i:4;s:9:\"elementId\";i:6;s:10:\"orderIndex\";i:6;s:5:\"value\";s:10:\"+46736506234\";s:5:\"label\";s:11:\"Phonenumber\";}}s:6:\"userId\";i:0;s:4:\"name\";s:10:\"Firstname Lastname\";s:9:\"firstname\";s:5:\"Firstname\";s:8:\"lastname\";s:4:\"Lastname\";s:5:\"email\";s:13:\"info@Firstname.se\";s:12:\"customerType\";i:0;s:11:\"billingInfo\";a:0:{}s:5:\"Mobil\";N;}}"

Весь массив:


    array(14) { ["projectId"]=> string(1) "4" ["calendarMode"]=> string(1) "1" ["postbackStep"]=> string(8) "checkout" ["previewUrl"]=> string(0) "" ["__viewstate"]=> string(997) "a:4:{i:0;a:1:{s:9:\"projectId\";i:4;}i:1;a:15:{s:14:\"availabilityId\";i:6;s:13:\"availableDate\";s:10:\"2019-05-31\";s:7:\"endDate\";s:10:\"2019-05-31\";s:9:\"startTime\";s:4:\"2627\";s:7:\"endTime\";N;s:13:\"startTimeslot\";s:8:\"10:30 am\";s:11:\"endTimeslot\";s:0:\"\";s:5:\"seats\";i:4;s:12:\"seatsMinimum\";i:1;s:12:\"seatsMaximum\";i:6;s:13:\"dynamicFields\";a:0:{}s:8:\"timezone\";s:16:\"Europe/Stockholm\";s:15:\"_availabilityId\";N;s:14:\"_availableDate\";N;s:8:\"_endDate\";N;}i:6;a:1:{s:9:\"requestId\";s:41:\"calendarista_req_1557484124_5cd5525ca8249\";}i:4;a:9:{s:12:\"formelements\";a:1:{i:0;a:5:{s:9:\"projectId\";i:4;s:9:\"elementId\";i:6;s:10:\"orderIndex\";i:6;s:5:\"value\";s:11:\"96146734834\";s:5:\"label\";s:11:\"Phonenumber\";}}s:6:\"userId\";i:0;s:4:\"name\";s:17:\"Firstname Lasname\";s:9:\"firstname\";s:9:\"Firstname\";s:8:\"lastname\";s:7:\"Lasname\";s:5:\"email\";s:22:\"someEmail@dotemail.com\";s:12:\"customerType\";i:0;s:11:\"billingInfo\";a:0:{}s:5:\"Mobil\";N;}}" ["stagingId"]=> string(0) "" ["requestId"]=> string(41) "calendarista_req_1557484124_5cd5525ca8249" ["projectList"]=> string(1) "4" ["calendarista_cart"]=> string(0) "" ["controller"]=> string(21) "calendarista_checkout" ["paymentsMode"]=> string(2) "-1" ["originalCost"]=> string(1) "0" ["totalAmountBeforeDiscount"]=> string(1) "0" ["booknow"]=> string(0) "" }


Я ожидаю что-то вроде этого "__viewstats" => (данные номера телефона)

1 Ответ

0 голосов
/ 10 мая 2019

Я думаю, что некоторые из s:digit записей содержат недопустимые номера для первой строки, для которой нужно выполнить сериализацию:

  • 10 для + 46736506234
  • 10 для имени и фамилии
  • 5 для Фамилии
  • 4 для Фамилии
  • 13 для info@Firstname.se

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

$e = "a:4:{i:0;a:1:{s:9:\"projectId\";i:4;}i:1;a:15:{s:14:\"availabilityId\";i:6;s:13:\"availableDate\";s:10:\"2019-05-29\";s:7:\"endDate\";s:10:\"2019-05-29\";s:9:\"startTime\";s:4:\"2569\";s:7:\"endTime\";N;s:13:\"startTimeslot\";s:8:\"10:30 am\";s:11:\"endTimeslot\";s:0:\"\";s:5:\"seats\";i:4;s:12:\"seatsMinimum\";i:1;s:12:\"seatsMaximum\";i:10;s:13:\"dynamicFields\";a:0:{}s:8:\"timezone\";s:16:\"Europe/Stockholm\";s:15:\"_availabilityId\";N;s:14:\"_availableDate\";N;s:8:\"_endDate\";N;}i:6;a:1:{s:9:\"requestId\";s:41:\"calendarista_req_1557482130_5cd54a92b61bd\";}i:4;a:9:{s:12:\"formelements\";a:1:{i:0;a:5:{s:9:\"projectId\";i:4;s:9:\"elementId\";i:6;s:10:\"orderIndex\";i:6;s:5:\"value\";s:12:\"+46736506234\";s:5:\"label\";s:11:\"Phonenumber\";}}s:6:\"userId\";i:0;s:4:\"name\";s:18:\"Firstname Lastname\";s:9:\"firstname\";s:9:\"Firstname\";s:8:\"lastname\";s:8:\"Lastname\";s:5:\"email\";s:17:\"info@Firstname.se\";s:12:\"customerType\";i:0;s:11:\"billingInfo\";a:0:{}s:5:\"Mobil\";N;}}";
$res = unserialize($e);
echo $res[4]["formelements"][0]["value"]; // +46736506234

Php demo

...