Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:Notice:Notice(8):未初始化的字符串偏移量_Php_Cakephp - Fatal编程技术网

PHP:Notice:Notice(8):未初始化的字符串偏移量

PHP:Notice:Notice(8):未初始化的字符串偏移量,php,cakephp,Php,Cakephp,我收到了这个错误消息 Notice: Notice (8): Uninitialized string offset: 39 经常在这一行: if(isset($getCity) && !empty($getCity)) $city = '/'.Inflector::slug($getCity[$this->request->params['named']['city']]); else $city = ''; 我试图理解为什么会收到此消息,并添加了调试日志 Ca

我收到了这个错误消息

Notice: Notice (8): Uninitialized string offset: 39
经常在这一行:

if(isset($getCity) && !empty($getCity)) $city = '/'.Inflector::slug($getCity[$this->request->params['named']['city']]); else $city = '';
我试图理解为什么会收到此消息,并添加了调试日志

CakeLog::write('activity', 'getCity '.print_r($getCity, true).'===>'.$this->request->params['named']['city'] );
日志文件输出始终如下所示:

Activity: getCity {"39":"Montuiri"}===>39
是什么告诉我的
$getCity
是一个带有
结果=>{“39”:“Montuiri”}
$this->request->params['named']['city']
不是空的,并且具有
值=>39


那么,是什么导致了通知信息?我真的不知道如何解决这个问题,因为这些消息每天都会写满我的调试日志…

您可以将构造
$foobar[15]
应用于数组和字符串。当它是一个数组时,它返回索引为
15
的数组元素,如果它是字符串,则返回请求的数字位置的字母(在本例中为16,因为计数从零开始)

如果您收到消息“uninitialized…offset”,则表示您正在请求数组或字符串中不存在的部分

尽管根据日志输出,
$getCity
是一个数组,但PHP错误消息清楚地表明,在某个时刻,您试图访问字符串的第40个字母


这可能是因为代码有一个分支/循环,其中数组变量被改写为字符串,然后再次通过上述行运行,从而导致错误。

如果以下任何变量实际上是字符串或null而不是数组,则会发生此错误

试试这个我不确定它对你是否有用但试试这个

   if(is_array($getCity) && !empty($getCity)) 
   {
    $city = '/'.Inflector::slug($getCity[$this->request->params['named'] 
    ['city']]); else $city = '';
   }

调试时执行变量转储而不是打印。通知上说是关于字符串偏移的。尝试将其类型转换为integerTry,以利用“现代”CakePHP特性,而不是避免使用它。不要使用命名参数,使用查询字符串和query()访问它。如果必须使用命名参数,请首先检查是否存在:
!空($this->request->params['named']['city'])
等。