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

2017-04-20 12:45:08 +08:00
 shiji

从第三方服务器获取 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
)
2408 次点击
所在节点    PHP
6 条回复
zztao
2017-04-20 12:59:23 +08:00
清除一下缓存呢
rayless
2017-04-20 13:05:28 +08:00
看你局部哪儿的 username 是一个对象
k9982874
2017-04-20 13:11:49 +08:00
2 楼应该是对的,$order['buyer']->username 试试
shiji
2017-04-20 13:24:33 +08:00
@zztao 试过没用 , optimize 也试了


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


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

我一开始没想到这个是因为 Ebay 给的 API 文档显示 username 的 Occurrence 是 Always 。
没想到可能 Ebay 的新 API 有 bug ,有几个老订单里面的买家用户名离奇地失踪了。。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/356133

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX