php - PHP 7.4 更改引用变量的处理方式?
问题描述
从 MySQL 查询的结果来看,我一直在使用 PHP 5.5 的几个参考变量:
$sql="SELECT `name`, `value` FROM `maindatabase`.`systemProtect` WHERE `name`='IV' || `name`='passPhrase'";
$result=mysqli_query($serverConn, $sql);
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){
$$row['name']=$row['value'];
}
虽然我确信这可能不是最好的做事方式,但它可以很好地满足我的需求。
我升级到 PHP 7.4 并收到一个错误:注意:数组到字符串的转换
通过大量的试验和错误,我通过使用一些额外的 {} 解决了这个问题 现在代码是
$sql="SELECT `name`, `value` FROM `maindatabase`.`systemProtect` WHERE `name`='IV' || `name`='passPhrase'";
$result=mysqli_query($serverConn, $sql);
while ($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){
${$row['name']}=$row['value'];
}
现在一切都恢复正常了,但我真的很想了解原因 - 在这种情况下,{} 在做什么?我假设这是因为变量是数组的一部分……但这以前不是必需的。
感谢您的任何见解。
解决方案
推荐阅读
- c# - 方法 'IndexOf' 没有重载需要 1 个参数。在 .NET 框架下工作,但不在 .NET Core 下工作
- javascript - 设置正确的正则表达式
- html - Internet Explorer 11 屏幕阅读器辅助功能问题
- java - 在缓冲区阅读器 Java 中添加行计数器
- python - 如何使用新的键和值创建字典并将值添加到一个键
- microsoft-graph-api - 图形邮件 API:504 网关超时错误
- groovy - 获取从节点可到达的顶点(在可变深度)
- regex - 使用字段分隔符在 bash 中替换 Perl 字符串 - 跳过标题行
- java - 为什么 getName 不包含在 java.lang.reflect.AccessibleObject 接口中?
- python - 对数曲线拟合不适合我的数据