虽然嵌套在Foreach触发器中 - 警告:传递给each()的变量不是数组或对象

时间:2018-02-27 21:43:59

标签: php

我一直得到一个"警告:传递给每个()的变量不是数组或对象"我知道的脚本错误是数组。基本代码是:

Array是通过API调用构建的 -

awk 'BEGIN{FS=OFS="\t"} FNR==NR{h[$3]++;next} {$7=h[$3]; print}' input.tab input.tab

我已通过$results = $abc->request('thing', $params, 'GET'); 确认print_r实际上是一个数组 - 这是一个示例

$results

我的代码是一个问题,应该循环遍历数组,同时循环清理数据并插入我的数据库

 Array
    (
         [currentPage] => 1
         [numberOfPages] => 196
         [totalResults] => 9754
         [data] => Array
             (
               [0] => Array
                 (
                   [id] => 1234
                   [name] => Robert
                   [nameShortDisplay] => Bob
                   [description] => Lorem....
                  )
              )

         [status] => success
  )

为什么说传递给each()的Variable不是数组?

2 个答案:

答案 0 :(得分:1)

foreach ($results as $each_results) {将迭代$results数组中的所有值(1,196,9754等)。

某些值不是数组,这就是您收到该错误的原因。但根据您在while循环中执行的操作,看起来您应该能够直接迭代data密钥。

foreach ($results['data'] as $entry) {
    $id = mysqli_real_escape_string($connection, $entry['id']);
    // ...
}

答案 1 :(得分:0)

foreach语句接受$results中的数组并对其进行迭代,将数组的每个元素分配给$each_results