【发布时间】:2019-01-31 04:57:38
【问题描述】:
我刚刚进行了一次迁移,有些事情让我感到惊讶。我在一个类中有这个函数:
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 文档上没有找到它。
谢谢
【问题讨论】:
-
我不知道(这意味着什么)。为什么要检查
if(is_array($params)中的数组,但假设$params是$params['options']中的数组?如果$params始终是一个数组,不要将其默认为字符串,而是在参数中使用$params = [] -
谢谢。 $params = [] 效果很好,感谢您的提示。好像是服务器出了故障,因为今天不工作了,所以我把它改回 $params 并再次工作。
标签: php parameters reserved