首页 > 解决方案 > $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 文档上找到它。

谢谢

标签: phpparametersreserved

解决方案


几乎所有的保留字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.


推荐阅读