首页 > 解决方案 > PHP - 需要帮助在循环中创建数组

问题描述

我处理了一些通过 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并将 $hostname 和 $fileName 变量添加到 foreach 循环中的每次迭代中。然后我打算对foreach数组$sessionsArray的每个元素使用 $hostname 和 $fileName 执行一些操作。

我被困在如何将第一个 foreach 循环中的变量添加到$sessionsArray数组中,以便随后可以循环遍历该数组。

标签: phparrays

解决方案


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;

推荐阅读