从数组访问对象返回未定义

时间:2019-03-29 04:20:10

标签: php

下面是$_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;

它给我一个错误

  

注意:未定义的索引:文件名

有什么帮助的想法吗?

更新:

试图做var_dump( (array)$_POST['image'])

  

array(2){[“'filename'”] =>字符串(14)“ cn-100x100.png”   [“'contents'”] =>字符串(10218)“ base64 ...”}

如果我从数组列base64中删除了['contents']数据,现在可以访问第一个数组。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

通过以下方法将所有对象转换为数组

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

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

现在,您可以像这样$all_images[0]['filename']

访问

答案 1 :(得分:1)

您可以更新

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

答案 2 :(得分:1)

无法使用$mail->Host = 'smtp.googlemail.com'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->SMTPAuth = true;

访问对象属性

您必须使用箭头语法$object['property_name']$object->property_name

在这种情况下,看起来$object->{'property_name'}已被定义为对象,因此您必须使用: $_POST['image']

您还可以使用$_POST['image']->{'0'}['filename']

将其转换为数组