php - 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
数组中,以便随后可以循环遍历该数组。
解决方案
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;
推荐阅读
- tensorflow - mobilenet-ssd的量化
- sql-server - 可以交换具有该列作为复合键的列
- mysql - 按大于 0 的字段排序
- javascript - 允许远程服务器访问本地主机上的 API 服务器
- fullcalendar - 正确拦截类以更改事件背景颜色
- unit-testing - 有没有一种简单的方法可以有条件地启用或忽略 Rust 中的整个测试套件?
- android - 旋转微调器箭头android
- scala - 将 Spock 与 Play 2.6 和 sbt 0.13 集成
- python - pxssh - 无法使用密码中的特殊字符登录服务器
- ios - 这是我应该创建课程的时候吗?