为了账号安全,请及时绑定邮箱和手机立即绑定

PHP - 需要帮助在循环中创建数组

PHP - 需要帮助在循环中创建数组

PHP
DIEA 2022-05-27 15:28:59
我处理了一些通过 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数组中,以便随后可以循环遍历该数组。
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

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;


查看完整回答
反对 回复 2022-05-27
?
墨色风雨

TA贡献1853条经验 获得超6个赞

$sessionsArray = array();

foreach($records as $key => $record){

        $sessionsArray[$key]['hostname'] = $record->hostname; 

    $sessionsArray[$key]['fileName'] = $record->fileName;

}


查看完整回答
反对 回复 2022-05-27
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您需要获取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;


}


查看完整回答
反对 回复 2022-05-27
  • 3 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号