php - 我的数组索引以何种方式为 'Illegal string offset' ?

标签 php

当通过在 PHP 5.4 上测试“面向 future ”的代码时,我收到一条我不理解的警告。

function __clone() {
  $this->changed = TRUE;
  foreach ($this->conditions as $key => $condition) {
    if (
    $condition['field']
    instanceOf QueryConditionInterface) {
      $this->conditions[$key]['field'] = clone($condition['field']);
    }
  }
}

我将 $condition['field'] 分成单独的行以减少需要关注的代码量。关于该特定行,PHP 有这样的说法

Warning: Illegal string offset 'field' in DatabaseCondition->__clone()

而且我只是看不出“字段”是非法的字符串偏移量。我猜我只是遗漏了一些明显的东西,但如果社区找不到问题,我会提交错误报告。

我将警告解释为“在任何情况下‘字段’都不是有效的键”。如果我曾尝试将数组作为键,那么这个错误是有道理的。

最佳答案

在没有更多关于创建条件数组/迭代器的知识的情况下,我只能假设您应该首先检查偏移量是否存在。

if(isset($condition['field']) && $condition['field'] instanceOf QueryConditionInterface)

在这种情况下使用 isset 就足够了,而且比 array_key_exists 更快,唯一的区别是,如果 $condition['field'] 为 NULL isset 将返回 falls,array_key_exists 将返回 true,因为 key 存在。但是因为您只想处理作为 QueryConditionInterface 实例的字段,所以您可以使用 isset 正常运行。

关于php - 我的数组索引以何种方式为 'Illegal string offset' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9335470/

相关文章:

php - 我可以在单个 URLRequest 中发送多个 'stream' 的 jpeg ByteArray 数据并输出 2 个图像吗? Flash AS3 -> PHP

php - Chrooted PHP-FPM脚本过一会儿无法解析DNS

php - 乔姆拉!时区

javascript - 将 GIF 代码转换为 GIF 图像或输出到文件?

php - 如何使用 instagram api 获取带有特定标签的图像?

php - Laravel Eloquent/SQL - 在数据库中搜索关键字

php - PHP 中的连接错误

php - mailto:带附件的链接

php - php/mysql 环境中的 "forgot user password"标准类或脚本?

php - 用于搜索用户 token (技能)的 SQL 查询