【发布时间】:2018-07-30 07:54:36
【问题描述】:
我无法在我的 laravel 5.5 刀片中循环数组
1.- 在我的控制器中,我正在查询一个 dynamodb,我正在返回 $arrayRet
$result =$dynamodb->query(array(
'TableName' => 'sigfox',
'KeyConditionExpression' => 'deviceid = :v_hash',
'ExpressionAttributeValues' => array (
':v_hash' => array('S' => '3E6231')
)
));
//echo "Query succeeded.\n";
$arrayRet['signals'] = $result['Items'];
return view('loggers.index', $arrayRet);
2.-在我的刀片中,我有以下代码
@foreach($signals as $signal)
<tr>
<td>{{$signal['payload']['M']['data']['S']}}</td>
</tr>
@endforeach
3.- 我得到 Undefined index: data --- 所以我有 dd($signal) 这就是结果
array:3 [▼
"payload" => array:1 [▼
"M" => array:10 [▼
"avgSnr" => array:1 [▶]
"rssi" => array:1 [▶]
"data" => array:1 [▼
"S" => "33333b414900"
]
"lng" => array:1 [▶]
"snr" => array:1 [▶]
"station" => array:1 [▶]
"seqNumber" => array:1 [▶]
"time" => array:1 [▶]
"device" => array:1 [▶]
"lat" => array:1 [▶]
]
]
"deviceid" => array:1 [▶]
"timestamp" => array:1 [▶]
]
4.- 我还尝试获取硬编码位置的值并且它有效。但我必须使用 @foreach 的“刀片方式”
<tr>
<td>{{$signals[0]['deviceid']['S']}}</td>
<td>{{$signals[0]['timestamp']['S']}}</td>
<td>{{$signals[0]['payload']['M']['avgSnr']['S']}}</td>
<td>{{$signals[0]['payload']['M']['snr']['S']}}</td>
<td>{{$signals[0]['payload']['M']['lat']['S']}}</td>
<td>{{$signals[0]['payload']['M']['lng']['S']}}</td>
</tr>
5.- 也许我遗漏了什么,请指教
【问题讨论】:
-
数组中有 3 项,是否有可能第一项具有所有索引但没有第二项或第三项?
-
我不确定表是如何创建的,但是有可能。实际上,如果我在刀片中执行 {{$signal['payload']['M']}}。它告诉我需要一个字符串,但给出了一个数组,这是有道理的。
-
如图所示,某些行的结构可能不一致。你需要关心的是当目标结构丢失时你将如何处理。请告诉我你所做的事情的目的和你想要的输出,以便我可以建议你适当的解决方案。
-
另外,在您的硬编码中,您没有更改
$signals索引。结果,它可能不会移动到下一行然后出错。 -
是的。 PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS ) 版权所有 (c) 1997-2017 PHP Group Zend Engine v3.0.0,版权所有 (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.22-0ubuntu0。 16.04.1,版权所有 (c) 1999-2017,由 Zend Technologies 提供
标签: php laravel foreach blade laravel-5.5