PHP:如何获取非对象的属性(错误消息-未定义的属性:stdClass :: $ 0)

时间:2019-04-26 04:36:07

标签: php

我将Laravel项目从一台服务器迁移到另一台服务器,除了下面的特定代码段(以下只是示例代码)之外,一切正常:

$test_obj = [
    (object) [
        'name' => 'name1',
        'value' => 'value1',
        ],
        (object) [
        'name' => 'name2',
        'value' => 'value2',
        ],
    ];

$first = (object) $test_obj->{0};
echo $first->name;

独立php命令上的错误消息:

  • 试图获取第14行上非对象的属性

关于Laravel的错误消息:

  • 未定义的属性:stdClass :: $ 0

奇怪的是,相同的用法在以前的服务器上可以正常工作(相同的php和laravel版本)。有人可以为此提供可能的解释和解决方案吗?

2 个答案:

答案 0 :(得分:1)

您打给我时

$first = (object) $test_obj->{0};

PHP将其更改为对象后将调用$ test_obj-> {0}

所以有错误

Trying to get property of non-object on line number 14

$first对象应该为null并导致

Undefined property: stdClass::$0

我尝试使用此

$first = ((object) $test_obj)->{0};

但是它仅适用于7.2.x版本的PHP。 希望对您有所帮助。

答案 1 :(得分:-1)

请勿使用 Select * from ( Select customer, RANK() OVER(partition by customer_id Order by transaction_date) firsttransaction From table_name ) Where firsttransaction=1 尝试使用echo来调试此类问题。看来这不是一个对象,可能是一个对象数组。