Недопустимое смещение строки при передаче данных формы - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь настроить данные формы для cURL с многомерным массивом и у меня возникли некоторые проблемы. Мой код ниже:

$fields = array(
    'full_name' => 'John Doe',
    'email' => 'name@example.com'
    'extra' => array(
            'IP' => '10.10.10.10',
            'Platform' => 'Macintosh'
        )
);

$delimiter = '-------------' . $boundary;
$data = '';

foreach ($fields as $name => $content) {
    if(is_array($content)) {
        foreach ($content as $key => $value) {
            $data .= "--" . $delimiter . "\r\n"
                . 'Content-Disposition: form-data; name="' . $name[$key] . "\"\r\n\r\n"
                . $value . "\r\n";
        }
    } else {
        $data .= "--" . $delimiter . "\r\n"
            . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
            . $content . "\r\n";
    }
}

Я получаю следующие ошибки:

Illegal string offset 'IP'
Illegal string offset 'Platform'

Как бы я передал name=extra['IP'] и name=extra['Platform'] без ошибок? Или я делаю это неправильно? Большое спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Форматы отправки форм не поддерживают вложенные (многомерные) массивы. Чтобы обработать эти данные, вам нужно либо сериализовать массив внутри массива, который является:

'extra' => serialize(array(
        'IP' => '10.10.10.10',
        'Platform' => 'Macintosh'
    ))

, либо изменить данные в других например, формат JSON, который позволяет использовать вложенные массивы.

для справки: https://www.php.net/manual/en/function.curl-setopt.php#99108

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...