[英]Loop multidimensional array Laravel
我在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.-我得到了未定義的索引:數據---所以我有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.-也許我想念一些東西,請指教
如果您使用的是PHP 7,則null合並運算符在這里非常有用!
@foreach(signals as signal)
<tr>
<td>{{ $signal['deviceid']['S'] ?? 'N/A' }}</td>
<td>{{ $signal['timestamp']['S'] ?? 'N/A' }}</td>
<td>{{ $signal['payload']['M']['avgSnr']['S'] ?? 'N/A' }}</td>
<td>{{ $signal['payload']['M']['snr']['S'] ?? 'N/A' }}</td>
<td>{{ $signal['payload']['M']['lat']['S'] ?? 'N/A' }}</td>
<td>{{ $signal['payload']['M']['lng']['S'] ?? 'N/A' }}</td>
</tr>
@endforeach
如果索引不存在,它將打印“ N / A”作為默認值。
會有更多的改善! 在發送視圖之前,創建一個模型來清理這些索引和所有內容,代碼將如下所示。 在您的控制器中,先處理這些數據,然后再發送給查看。 像array_map
這樣的函數在這里可能會有用。 邏輯人員應盡可能地脫離觀點。 您的代碼看起來更加整潔。
@foreach(signals as signal)
<tr>
<td>{{ $signal['deviceid'] }}</td>
<td>{{ $signal['timestamp'] }}</td>
<td>{{ $signal['avgSnr'] }}</td>
<td>{{ $signal['snr'] }}</td>
<td>{{ $signal['lat'] }}</td>
<td>{{ $signal['lng'] }}</td>
</tr>
@endforeach
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.