php - foreach 循环 json_encode
问题描述
我正在尝试获取 json 值,但我得到:
警告:第 17 行 /home/myFiles/thepage.com/djs.php 中的非法字符串偏移 'data_id'
警告:第 17 行 /home/myFiles/thepage.com/djs.php 中的非法字符串偏移量“data_key”
include("func/cnfng.php");
include_once 'func/func.php'; // Functions
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$Ups = new THE_UPDATES($db);
$TheData = $Ups->Data();
$sql = mysqli_query($db,"SELECT * FROM myData") or die(mysqli_error($db));
$arr= [];
$row = mysqli_fetch_array($sql, MYSQLI_ASSOC);
foreach($row as $data) {
$arr[] = [
$data['data_id'] => $TheData[$data['data_key']]['English']
// ^
// |__ This is on line 17
];
}
echo json_encode($arr);
你能帮我解决一下吗,拜托。
解决方案
$row = mysqli_fetch_array($sql, MYSQLI_ASSOC);
每次调用返回 1 行。这意味着$row
在您的示例中只有 1 行(或应该)。
fetch
不需要该方法,mysqli
因为该query
函数返回一个可迭代的结果对象。您只需要更改您foreach
的使用 return 并删除fetch
.
foreach($sql as $data) {
也可能想要将变量更改为,$result
因为它是结果而不是 SQL。
我不清楚 fetch -> foreach 为什么/如何更改返回的数据。
推荐阅读
- docker - How do I properly bring up a kubernetes cluster that was previously brought down?
- php - 404重定向到页面不起作用php / htaccess
- c++ - 如何使用“\”不作为命令,而只是作为字符串中的文本
- html - Chrome developer tools, what is capture full size screenshot?
- azure - Azure Application Gateway 502 Error due to NSG
- ionic-framework - 离子导出项目到apk
- c++ - 在 std::vector 中存储指针
- html - 使用 CSS 将图像块居中
- java - Maven 无法识别安装在 Ubuntu shell 上的 $JAVA_HOME jdk
- html - 如何在悬停时也有框阴影效果的表格行之间放置空间?