[英]PHP - Help Needed Creating Array in a Loop
我處理了一些通過 HTTP POST 發送到我的 PHP 文件的 JSON 數據。 然后我需要提取一些元素並創建一個包含這些元素的 PHP 數組,這樣我就可以遍歷這個數組並執行一些操作。
以下是發送的 JSON 數據的示例:
[
{
"fileName": "Invoices",
"event": "processed",
"serverName": "server1.acme.com",
"timestamp": 1574229999
},
{
"fileName": "Invoices",
"event": "processed",
"serverName": "server2.acme.com",
"timestamp": 1574228341
},
{
"fileName": "Payments",
"event": "processed",
"hostname": "server3.acme.com",
"timestamp": 1574766997
}
]
然后我將其解碼以僅解析出我需要的元素:
$payload = @file_get_contents('php://input');
$records= json_decode( $payload, FALSE );
$sessionsArray = array();
foreach($records as $record){
$hostname = $record->hostname;
$fileName = $record->fileName;
// need to add these to the $sessionsArray for each iteration of the loop
}
我想創建一個新數組$sessionsArray
並為 foreach 循環中的每次迭代添加 $hostname 和 $fileName 變量。 然后我打算在$sessionsArray
上做另一個foreach
並使用 $hostname 和 $fileName 為數組的每個元素執行一些操作。
我被困在如何將第一個 foreach 循環中的變量添加到$sessionsArray
數組中,以便我隨后可以遍歷該數組。
foreach($records as $record){
$sessionsArray[] = [
'hostname' => $record->hostname,
'fileName' => $record->fileName,
];
}
然后你可以這樣做:
foreach($sessionsArray as $entry){
$hostname = $entry['hostname'];
$fileName = $entry['fileName'];
}
=== 或 ===
foreach($records as $record){
$sessionsArray[$record->hostname] = $record->fileName;
}
然后你可以這樣做:
foreach($sessionsArray as $hostname => $fileName){
// $hostname contains the hostname
// $filename contains filename
}
僅供參考,根據您提供的 JSON 對象,您的代碼應該是:
$hostname = $record->serverName;
$fileName = $record->fileName;
$sessionsArray = array();
foreach($records as $key => $record){
$sessionsArray[$key]['hostname'] = $record->hostname;
$sessionsArray[$key]['fileName'] = $record->fileName;
}
你需要得到的最后一個關鍵sessionsArray
每前loop
和傳遞last key
,同時增加了變數。
這是示例:
$sessionsArray = !empty($sessionsArray)?$sessionsArray:[];
$continueKey = (@array_pop(array_keys($sessionsArray)))?@array_pop(array_keys($sessionsArray))+1:0;
foreach($records as $record){
$sessionsArray[$continueKey]['hostname'] = $record->hostname;
$sessionsArray[$continueKey]['fileName'] = $record->fileName;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.