【问题标题】:Invalid argument supplied for foreach() php warning为 foreach() php 警告提供的参数无效
【发布时间】:2014-07-16 15:10:49
【问题描述】:

我是 php 和 codeigniter 的新手。

我在 php 中有错误,

 A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: controllers/search.php

Line Number: 44

第 44 行是:foreach ($data as $key => $value)

这里有一些语法错误, 在这个 if 语句中,if (!empty($user['search'])), $data 被正确打印,而在这个 if 语句中,if(!empty($data)), $data 没有被打印。谁能帮我解决这个问题。

【问题讨论】:

  • Message: Invalid argument supplied for foreach() 表示$data 不是数组,但不表示为空。
  • 尝试改变 $data = json_decode($user['search'])->result;到 $data = json_decode($user['search']->result);看看它是否有效
  • 如果我这样做,它会给出一个错误,遇到 PHP 错误 严重性:通知消息:尝试获取非对象文件名的属性:控制器/search.php 行号:41跨度>

标签: php codeigniter


【解决方案1】:

问题是你的循环变量中没有任何值($data)。

您可以打印它们的值以检查变量是否包含值。

【讨论】:

  • 空数组不会抛出该错误。它只是没有进入循环内部,仅此而已。
  • 我也觉得这样做比较好,但不是强制的,也不是这里的问题。就是这样。
  • 这意味着你可以打印 $data 数组
【解决方案2】:

替换:

$data = json_decode($user['search'])->result;

作者:

$data = json_decode($user['search'], true);

json_decode 就是这样工作的:

var_dump(json_decode($json)); // returns object(stdClass)
var_dump(json_decode($json, true)); returns array

您的 $data 是一个对象,而 foreach 严格需要一个数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多