我的项目在 cakePHP 中,但我认为这是我误解的原生 PHP 的一个方面。
我afterFind($results, $primary = false)
的AppModel
. debug($results);
如果我得到一个这样的数组,在一个特定的发现上
array(
'id' => '2',
'price' => '79.00',
'setup_time' => '5',
'cleanup_time' => '10',
'duration' => '60',
'capacity' => '1',
'discontinued' => false,
'service_category_id' => '11'
)
在我的afterFind
我有一些这样的代码:
foreach($results as &$model) {
// if multiple models
if(isset($model[$this->name][0])) {
....
查找的结果来自我的Service
模型,因此插入该 for$this->name
并检查if(isset($model['Service'][0]))
应该返回 false,但它返回 true?if(isset($model['Service']))
按预期返回 false。
我收到以下 PHP 警告:
非法字符串偏移“服务”
那么这里发生了什么?if(isset($model['Service'][0]))
如果返回false ,为什么返回if(isset($model['Service']))
true?
更新:
我仍然不知道我原来的问题的答案,但我通过首先检查 $results 是否是一个多维数组来解决它
if(count($results) != count($results, COUNT_RECURSIVE))