【问题标题】:How can I validate an illegal offset warning?如何验证非法偏移警告?
【发布时间】:2021-01-04 15:08:13
【问题描述】:
foreach ($array as $value) {
      dump($value);
    }

通过转储我的循环,我得到以下输出:

array:2 [▼
  "id" => "9a989408e5"
  "Name" => "cat"
]


array:2 [▼
  "id" => "47601aae85"
  "Name" => "elephant"
]


array:2 [▼
  "uuid" => "7cb16ddafc"
  "Anzahl" => "rabbit"
]

但如果我尝试只捕获 id....

foreach ($array as $value) {
      dump($value['id']);
    }

我得到错误:

警告:非法字符串偏移 'id'

【问题讨论】:

  • 您尝试过什么调试问题?您能否分享更多细节,以便其他人可以重现该问题?
  • @NicoHaase 问题被if (is_array($value) || is_object($value)){解决了
  • ....解决了吗?该代码不检查数组键id到底是否存在
  • @NicoHaase 嗯。但我不再收到错误消息。这就是为什么我认为它已经解决了
  • 您还没有检查$value 真正包含的内容吗?

标签: php arrays foreach


【解决方案1】:

您可以使用 array_key_exists() 简单地检查该键是否存在于数组中。像这样:

if(array_key_exists('id', $value)){
    dump($value['id']);
}

【讨论】:

  • 那行不通。我收到错误Warning: array_key_exists() expects parameter 2 to be array, string given
  • 我假设您在 foreach 循环中执行 if 检查?根据您的转储输出,这不应该发生。但是,您可以将自己的回复与array_key_exists 结合使用。首先,检查它是否是一个数组。然后,检查数组是否有键 id.
【解决方案2】:
 foreach ($array as $value) {
    if (is_array($value) || is_object($value)){
       dump($value['id']);
    }
  }

【讨论】:

  • 此代码不检查数组中是否存在 id
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 2021-09-30
  • 2013-09-13
  • 2013-04-11
  • 2012-04-09
  • 2019-07-28
相关资源
最近更新 更多