php - $params 是 PHP 7.2 中的保留字吗?
问题描述
我刚刚进行了一次迁移,有些事情让我感到惊讶。我在一个类中有这个函数:
function selectEnums($name,$table,$filed, $params = '')
{
$fieldName = $name. $this->name;
if(is_array($params) && sizeof($params) > 0)
{
foreach($params as $var => $newValue)
{
$$var = $newValue;
}
}
$res = $this->getEnums($table,$field, $this->db);
$this->debug('res after getEnums');
$this->debug($res);
$params['options'] = array();
foreach($res as $v)
{
$params['options'][] = $v;
}
.....
}
现在,我得到:
PHP 致命错误:未捕获的错误:不能将字符串偏移量用作...中的数组。
在这一行:foreach($res as $v)
感谢之前的调试,我 100% 确定这$res
是一个数组。现在,这是一件棘手的事情:如果我将变量从 更改$params
为$parames
,它就可以正常工作。更糟糕的是,这条线运行良好: if(is_array($params) && sizeof($params) > 0)
致命错误被抛出与$params
.
所以它正在适应这种变化,买为什么???有任何想法吗?也许是 php.ini 配置?保留字?我没有在 PHP 文档上找到它。
谢谢
解决方案
几乎所有的保留字PHP
都不以$
符号开头,而是在没有前导符号的情况下定义,并且也应该大写。例如
const MY_RESERVE_WORD = value;
或与
define(MY_RESERVE_WORD, value);
所以没有这样的保留字,您可以在PHP Fiddleparams
测试以下代码
$params = [1, 2, 2];
foreach($params as $var => $newValue)
{
$$var = $newValue;
}
可能$params
定义为您正在使用constant
的任何一个。lib/framework
希望这可以清楚地说明PHP
.
推荐阅读
- f# - 如何从相同类型的序列中找到特定的可区分联合,然后返回该特定的可区分联合(如果存在)
- amazon-web-services - 如何使用 CloudFormation 模板将 BucketPolicy (LifecycleConfiguration) 应用于现有存储桶?
- puppeteer - 如何使用 puppeteer 获取所有具有样式的字体
- python - 如何批处理我的 R 机器学习模型?
- mysql - 当索引名称为“index”时如何在mysql中删除索引
- android - 如何在android应用程序中实现人脸识别以登录目的?
- powershell - 使用 powershell 创建符号链接
- node.js - 从 Oreilly 书籍代码安装 @types/d3 的 NPM 问题
- ios - 条件绑定的初始化程序必须具有可选类型,而不是“经销商”
- python - OSX 上的“jupyter”命令来自哪里