Создать массив PHP с внутренним массивомPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Создать массив PHP с внутренним массивом

Сообщение Anonymous »

Мне нужно использовать json_encode для отправки массива PHP в конечную точку.
Но сначала мне нужно создать массив PHP.
Изначально я создавал объект JSON для отправки в конечную точку, вот так:

Код: Выделить всё

$content = '{
"event": "'. $event . '",
"payload": {
"email": "' . $email . '",
"fields": {
"mrc_c3": "' . $mrc_c3 . '",
"country": "' . $country . '",
"last_name": "'.$lastName.'",
"first_name": "' . $firstName . '",
"mrc_date_c3": "' . $mrc_date_c3_format . '"
},
"overwrite": true
}
}';
Исходя из предыдущего вопроса, отправлять объект JSON не рекомендуется, лучше отправить массив PHP и прикрепить к нему json_encode.
Вот моя попытка создать массив PHP:

Код: Выделить всё

$arr = array('event' => $event, 'payload', 'email' => $email, 'fields', 'mrc_c3' => $mrc_c3, 'country' => $country, 'last_name' => $lastName, 'first_name' => $firstName, 'mrc_date_c3' => $mrc_date_c3_format);
На что я могу распечатать вот так:

Код: Выделить всё

echo json_encode($arr);
И я получаю такой ответ:

Код: Выделить всё

{"event":"donation_completed","0":"payload","email":"myemail@yahoo.com","1":"fields","mrc_c3":"21.50","country":"US","last_name":"Beasley","first_name":"John","mrc_date_c3":"10\/18\/2024"}
Но я вижу «0» после «donation_completed» и «1» после «myemail@yahoo.com», но других цифр не вижу.
Что я сделал не так? Правильно ли я создал массив PHP?
РЕДАКТИРОВАТЬ
Мне удалось создать приведенный ниже массив с подмассивом:

Код: Выделить всё

$arr = [
'event' => $event,
'payload' => [
'email' => $email,
'fields' => [
'mrc_c3' => $payload['payload']['fields']['mrcC3'],
'country' => $payload['payload']['fields']['country'],
'last_name' => $payload['payload']['fields'}['lastName'],
'first_name' => $payload['payload']['fields']['firstName'],
'mrc_date_c3' => date('m/d/Y', strtotime($payload['payload']['fields']['mrcDateC3'])),
],
'overwrite' => true
],
];
И тело ответа отправителя выглядит следующим образом:

Код: Выделить всё

"{\n    \"event\": \"donation_completed\",\n    \"payload\": {\n
\"email\": \"myemail@yahoo.com\",\n        \"fields\": {\n
\"mrc_c3\": null,\n            \"country\": \"US\",\n
\"last_name\": null,\n            \"first_name\": null,\n
\"mrc_date_c3\": \"01\\/01\\/1970\"\n        },\n
\"overwrite\": true\n    }\n}status 200"
Я не понимаю. Почему он отправляет нулевые значения и почему дата неверна? Предполагается, что это 18.10.2024.
Полезная нагрузка поступает в PHP-скрипт и выглядит следующим образом:

Код: Выделить всё

$payload = json_decode(file_get_contents("php://input"), true);
Затем я беру значения из $payload и присваиваю их переменным:

Код: Выделить всё

$event = $payload["event"];
$email = $payload['payload']["email"];
$firstName = $payload['payload']['fields']['firstName'];
$lastName = $payload['payload']['fields']['lastName'];
$country = $payload['payload']['fields']['country'];
$mrc_c3 = $payload['payload']['fields']['mrcC3'];
$mrc_date_c3 = strtotime($payload['payload']['fields']['mrcDateC3']);
$mrc_date_c3_format = date('m/d/Y', $mrc_date_c3);
Я могу вывести эти значения и увидеть их в теле ответа Postman.
Я могу повторить echo json_encode($arr, JSON_PRETTY_PRINT) и просмотрите каждое из значений.
Почему они отправляются в конечную точку с нулевой и неправильной датой?

Подробнее здесь: https://stackoverflow.com/questions/791 ... rnal-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»