php - PHP添加到在foreach中创建的现有数组
问题描述
我正在从数据库中选择值并将它们添加到foreach
循环中的数组中,这是可行的。
在此之后,我在第二个查询中选择其他值,我想将这些值添加到同一个数组中,我该如何实现?
请注意,我还不关心代码的安全性。
我的(简化)代码如下;
$users_arr = array();
// first query
$db->setQuery("SELECT id, name, username, email FROM sometable WHERE name = '$name' ");
$results = $db->loadObjectList();
foreach ($results as $result) {
$userid = $result->id;
$name = $result->name;
$username = $result->username;
$email= $result->email;
$users_arr[] = array(
"id" => $userid,
"name" => $name,
"username" => $username,
"email" => $email);
}
// second query
$db->setQuery("SELECT status AS wb_status FROM anothertable ");
$wb = $db->loadObject();
$wb_status = $wb->wb_status;
// add to original array
$users_arr[] = array("wb_status" => $wb_status);
echo json_encode($users_arr);
exit();
这会产生;
[
{
"id": "981",
"name": "jo",
"username": "jo123",
"email": "jo@example.com"
},
{
"wb_status": "Complete"
}
]
我需要这种格式的;
[
{
"id": "981",
"name": "jo",
"username": "jo123",
"email": "jo@example.com",
"wb_status": "Complete"
}
]
解决方案
在第一个查询之前运行第二个查询并将元素添加到数组中foreach
:
// second query becomes first
$db->setQuery("SELECT status AS wb_status FROM anothertable ");
$wb = $db->loadObject();
$wb_status = $wb->wb_status;
$users_arr = array();
// first query becomes second
$db->setQuery("SELECT id, name, username, email FROM sometable WHERE name = '$name' ");
$results = $db->loadObjectList();
foreach ($results as $result) {
$userid = $result->id;
$name = $result->name;
$username = $result->username;
$email= $result->email;
$users_arr[] = array(
"id" => $userid,
"name" => $name,
"username" => $username,
"email" => $email
"wb_status" => $wb_status, // Here
);
}
echo json_encode($users_arr);
exit();
更新:另一种方法是迭代$users_arr
并向每个元素插入所需的数据:
// ...
$db->setQuery("SELECT status AS wb_status FROM anothertable ");
$wb = $db->loadObject();
$wb_status = $wb->wb_status;
// I use `&` here so as to pass `$item` as a
// reference to original item in `$users_arr`
foreach ($users_arr as &$item) {
$item["wb_status"] = $wb_status;
}
echo json_encode($users_arr);
exit();
推荐阅读
- java - 关于“静态方法没有后期绑定”结果的问题 [Java]
- azure - Azure 表单识别器未按预期运行
- kotlin - 无法通过 cmd 运行 gradle run 来初始化类 org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImplKt
- python - 对于实时数据,Tkinter matplotlib 画布更新太慢
- excel - 尝试将数据从一张表复制到另一张表并创建多个条目
- javascript - 尝试使用 Twit 获取一批推文时如何修复无限循环
- ios - 如何禁用 SwiftUI ScrollView 剪辑
- huawei-mobile-services - React Native in HMS 获取groovy.json.JsonException: Unable to determine the current character, it is not a string, number, array or object
- python - 'Equal' Op 的输入 'y' 的 bool 类型与参数 'x' 的 float32 类型不匹配
- c# - 如何部署和运行 ASP.NET Core Web API?