Доступ к объекту из массива возвращает undefined

Ниже приведен вывод на печать из $_POST['image']

stdClass Object
(
    [0] => Array
        (
            ['filename'] => cn-100x100.png
            ['contents'] => 
        )

    [1] => Array
        (
            ['filename'] => 
            ['contents'] => 
        )

)

когда я делаю,

echo '<pre>';
print_r((object)$_POST['image'][0]['filename']);
exit;

это дает мне ошибку

Notice: Undefined index: filename

Обновлять

Я пытался сделать var_dump( (array)$_POST['image']),

array(2) { ["'filename'"]=> string(14) "cn-100x100.png" ["'contents'"]=> string(10218) "base64..."}

Если бы я удалил данные base64 из столбца массива ['contents'], теперь я могу получить доступ к первому массиву.

я думаю, что могут быть некоторые проблемы в вашем формате массива

Deepak A 29.03.2019 05:38

$array = array( 0 => [ "имя файла" => 'cn-100x100.png', "содержимое" => '' ], 1 =>[ "имя файла" => '', "содержимое" => '' ], ); print_r((объект)$массив[0]['имя файла']); это работает

Deepak A 29.03.2019 05:39

В столбце есть данные base64 contents Если я удалил base64 данные из столбца массива ['contents'], теперь я могу получить доступ к первому массиву. Есть идеи, помогите?

Juliver Galleto 29.03.2019 06:54
stackoverflow.com/questions/48599135/…, это аналогичная проблема, пожалуйста, обратитесь
Deepak A 29.03.2019 06:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
88
3

Ответы 3

вы можете обновить его

echo '<pre>';
print_r((array)$_POST['image'][0]['filename']);
exit;

В столбце есть данные base64 contents Если я удалил base64 данные из столбца массива ['contents'], теперь я могу получить доступ к первому массиву. Есть идеи, помогите?

Juliver Galleto 29.03.2019 06:54

Доступ к свойствам объекта с помощью $object['property_name'] недоступен.

Вы должны использовать синтаксис стрелки $object->property_name или $object->{'property_name'}

В этом случае похоже, что $_POST['image'] каким-то образом был определен как объект, поэтому вам придется использовать: $_POST['image']->{'0'}['filename']

Вы также можете преобразовать его в массив, используя: $_POST['image'] = (array)$_POST['image'];

В столбце есть данные base64 contents Если я удалил base64 данные из столбца массива ['contents'], теперь я могу получить доступ к первому массиву. Есть идеи, помогите?

Juliver Galleto 29.03.2019 06:54

Немного хитрости, но последовательный способ преобразования объектов в массив — это использование: $variable = json_decode(json_encode($variable),true); — попробуйте применить это к $_POST['image'] переменной

Rylee 29.03.2019 07:01

Преобразуйте весь объект в массив следующим образом

$all_images= (array) $_POST['image'];

echo '<pre>';
print_r($all_images);
echo '</pre>';

Теперь вы можете получить доступ вот так $all_images[0]['filename']

Другие вопросы по теме