从数组中获取值会抛出ErrorException"尝试获取非对象的属性"

时间:2018-02-01 15:59:37

标签: php laravel

我正在尝试显示数组中每个事件的键。

这是var_dump

PAMI\Message\ResponseResponseMessage (object) [Object ID #374][9 properties]
events: (array) [29 elements]
    0:  PAMI\Message\EventPeerEntryEvent (object) [Object ID #381][6 properties]
            rawContent:protected: (string) Event: PeerEntry
            ActionID: 1517499612.3137
            Channeltype: SIP
            ObjectName: 100
            ChanObjectType: peer
            IPaddress: -none-
            IPport: 0
            Dynamic: yes
            AutoForcerport: no
            Forcerport: yes
            AutoComedia: no
            Comedia: yes
            VideoSupport: no
            TextSupport: no
            ACL: yes
            Status: UNKNOWN
            RealtimeDevice: no
            Description: 
        channelVariables:protected: (array) [1 element]
            default: (array) [0 elements]
        lines: (array) [0 elements]
        variables: (array) [0 elements]
        keys: (array) [18 elements]
            event: (string) PeerEntry
            actionid: (string) 1517499612.3137
            channeltype: (string) SIP
            objectname: (string) 100
            chanobjecttype: (string) peer
            ipaddress: (string) -none-
            ipport: (string) 0
            dynamic: (string) yes
            autoforcerport: (string) no
            forcerport: (string) yes
            autocomedia: (string) no
            comedia: (string) yes
            videosupport: (string) no
            textsupport: (string) no
            acl: (string) yes
            status: (string) UNKNOWN
            realtimedevice: (string) no
            description: (string) 
            createdDate: (integer) 1517499612

    1: etc........

    2: etc........

这是我的blade.php

       @foreach($data->events as $peer)
            <tr>
                <td>{{ $peer->keys->ipaddress }}</td>
                <td></td>
                <td></td>
            </tr>
        @endforeach

我一直收到错误

  

&#34;试图获得非对象的属性&#34;

我知道这个错误意味着什么,但我不知道我做错了什么。

如果我只是在$ peer上执行var_dump,我可以看到所有键,但我无法访问它们。

任何帮助将不胜感激!

编辑** 所以我做了一个像这样的var_dump

   @foreach($data->events as $peer)
        <tr>
            <td>
            @if($peer->keys)
                {{ var_dump($peer->keys) }}
            @endif
            </td>
            <td></td>
            <td></td>
        </tr>
    @endforeach

这是dd的输出 https://pastebin.com/0Wv4nehp

现在的问题是,我只能使用&#34; event&#34;或&#34; actionid&#34; {{$ peer-&gt; keys [&#34; event&#34;]}}

如果我尝试在该数组中使用其他任何东西...... {{$ peer-&gt; keys [&#34; status&#34;]}}

我明白了 未定义的索引:状态

我在这里不知所措。

3 个答案:

答案 0 :(得分:2)

使用[]访问用于访问对象属性的数组元素而不是->

@foreach($data->events as $peer)
        <tr>
            <td>{{ $peer->keys["ipaddress"] }}</td>
            <td></td>
            <td></td>
        </tr>
@endforeach

如果有任何遗漏元素的可能性,那么你可以这样做 -

@foreach($data->events as $peer)
        <tr>
             @foreach($peer->keys as $key=>$value)
               <td>{{ $value }}</td>
             @endforeach
        </tr>
@endforeach

答案 1 :(得分:0)

尝试使用

   @foreach($data->events as $peer)
        <tr>
            <td>
              @if($peer->keys)
                  {{ $peer->keys->ipaddress }}
              @endif
            </td>
            <td></td>
            <td></td>
        </tr>
    @endforeach

答案 2 :(得分:0)

在您的示例中,我看到每个事件都有很多键 您正在尝试显示每个事件的所有事件和所有键

@foreach($data->events as $peer)
    <tr>
        <td>
             @foreach($peer->keys as $key)
                 {{ $key->ipaddress }} ,
             @endforeach
        </td>
        <td></td>
        <td></td>
    </tr>
@endforeach

此代码应显示以逗号分隔的所有事件和IP地址