gpt4 book ai didi

php - PHP5升级到PHP7 "Broke"获取数组值

转载 作者:行者123 更新时间:2023-11-29 11:20:32 25 4
gpt4 key购买 nike

在 PHP5 下,我能够使用通过以下代码开发的数组 ($_SESSION['issuenum_index'])。

if ($_SESSION['mfilter'] == 0) {
$query = "SELECT IssueIDNUM,MagazineNUM FROM tblIssueList ORDER by IssueDate DESC, IssueIDNUM ";
} else {
$query = "SELECT IssueIDNUM,MagazineNUM FROM tblIssueList WHERE MagazineNUM = {$_SESSION['mfilter']} ORDER BY IssueDate DESC, IssueIDNUM ";
}

$_SESSION['issuenum_index'] =$conn->query($query);

if (!$_SESSION['issuenum_index']) die($conn->error);

$_SESSION['rowcount'] = mysqli_num_rows($_SESSION['issuenum_index']);

现在我已经升级到PHP7了,数组好像不能用了。返回了正确的行计数,但 IssueIDNUMMagazineNUM 的值似乎缺失。

当我运行下面的代码时:

    foreach($_SESSION['issuenum_index'] as $key => $value)
{
echo $key." Value: ". $value ."<br>" ;
}

我得到结果:“2181 Value:Array”。数字“2181”是行号。我期望的是与“IssueIDNUM”和“MagazineNUM”相关的值,而不是“Array”一词。

当我运行以下代码时: print_r($_SESSION['issuenum_index']); 我得到: "mysqli_result Object ( [current_field] => 0 [field_count] => 2 [长度] => [行数] => 2187 [类型] => 0 )"。我没有看到这两个字段名称。

如何显示该数组的字段名称?另外,如何针对 PHP7 修复此代码?

最佳答案

您的$conn->query($query)返回的不是一个数组,而是实现了Traversable接口(interface)的mysql_result对象,因此您可以循环遍历它。 [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 2187 [type] => 0 是该对象的属性。 http://php.net/manual/en/class.mysqli.php .

因此,当我们迭代该对象时,它将返回一个数据数组。“2181 Value: Array” - 2181 - 是数据数组的键。我希望您已经得到了上面的“2180 Value: Array”,依此类推,直到 0。数组是您的数据所在的位置。只需尝试 print_r($value),您就会看到发生了什么。

您可以使用 fetch_all 方法( http://php.net/manual/en/mysqli-result.fetch-all.php )来设置 session 中的所有数据(不是问,为什么要这样做)

$_SESSION['issuenum_index'] = $conn->query($query)->fetch_all();

编辑:建议您之前的 PHP 版本低于 5.4,其中添加了 Traversable 接口(interface)。与 PHP7 没有任何关系。

关于php - PHP5升级到PHP7 "Broke"获取数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com