V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shiji
V2EX  ›  PHP

见鬼了, Laravel 突然出现了个问题找不到原因

  •  
  •   shiji · 2017-04-20 12:45:08 +08:00 · 2404 次点击
    这是一个创建于 2556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从第三方服务器获取 JSON 、例子如下:

    http://developer.ebay.com/devzone/rest/api-ref/fulfillment/order__get.html

    局部:

    "orders": [
         /* Order */
        "buyer":
            { /* Buyer */
            "username": string
            },
        "buyerCheckoutNotes": string,
    

    我的程序( View 里面):

    @foreach($orders as $order)
    	<tr class="{{$order['orderFulfillmentStatus']==='NOT_STARTED'
    	 && $order['orderPaymentStatus'] === 'PAID'?'warning':''}}">
    		<td>
    				<input class="ebay_line_id" type="checkbox" name="checkbox-inline" value="{{str_replace('-','+',explode('!',$order['orderId'])[0])}}">
    		</td>
    		<td>{{date("Y-m-d H:i:s T", strtotime($order['creationDate']))}}</td>
    		<td><a href="./order/{{$order['orderId']}}" target="_blank">{{explode('!',$order['orderId'])[1]}}</a></td>
    		<td><a href="http://feedback.ebay.com/ws/eBayISAPI.dll?ViewFeedback2&ftab=AllFeedback&userid={{$order['buyer']['username']}}"
    			   target="_blank">{{$order['buyer']['username']}}</a></td>
    		<td>{{$order['pricingSummary']['total']['value']}} {{$order['pricingSummary']['total']['currency']}}</td>
    		<td>{{$order['fulfillmentStartInstructions'][0]['shippingStep']['shipTo']['contactAddress']['postalCode']}}</td>
    		<td>{{$order['orderPaymentStatus']}}</td>
    		<td>{{$order['orderFulfillmentStatus']}}</td>
    	</tr>
    @endforeach
    

    这个程序之前运行过,没有任何问题。 今天打开的时候突然出现错误:

    ErrorException in 85c3fd981ea2d3bf4fe084a9e73d39d63a61809c.php line 103:

    Undefined index: username (View:

    里面两处涉及 username 的都找不到 index 。别的 index 都没有任何问题。

    var_dump, print_r 都试过了,$order['buyer']['username']是确确实实存在的,所以我有点懵,不知道问题出在哪了。请求大家帮助,谢谢。

    {{print_r($order['buyer'])}} 的结果:

    (
        [username] => daven******2010
    )
    
    6 条回复    2017-04-20 15:43:05 +08:00
    zztao
        1
    zztao  
       2017-04-20 12:59:23 +08:00 via Android
    清除一下缓存呢
    rayless
        2
    rayless  
       2017-04-20 13:05:28 +08:00
    看你局部哪儿的 username 是一个对象
    k9982874
        3
    k9982874  
       2017-04-20 13:11:49 +08:00
    2 楼应该是对的,$order['buyer']->username 试试
    shiji
        4
    shiji  
    OP
       2017-04-20 13:24:33 +08:00 via Android
    @zztao 试过没用 , optimize 也试了


    @rayless 这个数组用 json decode( $json, true)处理过,参数里面强制转换成 assoc array 了.


    @k9982874 同上 试过了。错误提示:不是 object (因为如同我刚刚说的,之前强制转换成数组了) 另外如果这样的话不会单单 username 找不到 index ,而是所有都找不到 index 。现在的问题是只有 username 这里找不到,别的都没问题。 所以我有一种见鬼了的感觉
    2owe
        5
    2owe  
       2017-04-20 14:17:14 +08:00
    这里是个循环啊, order 数组中任何一个元素不符合 buyer => {"username" => 'xx'} 格式的都有可能报错。建议进 viewer 之前,先将数据校验一遍。
    shiji
        6
    shiji  
    OP
       2017-04-20 15:43:05 +08:00
    @2owe 牛!真让你说着了!!!!!!果然是这样。

    我一开始没想到这个是因为 Ebay 给的 API 文档显示 username 的 Occurrence 是 Always 。
    没想到可能 Ebay 的新 API 有 bug ,有几个老订单里面的买家用户名离奇地失踪了。。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1026 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:16 · PVG 03:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.