【问题标题】:What's the error in my foreach loop?我的 foreach 循环有什么错误?
【发布时间】:2013-05-08 10:24:33
【问题描述】:

下面是我的多维数组$prev_map_data

Array
(
    [0] => Array
        (
            [class_id] => 2
            [class_name] => II
            [class_checked] => 1
            [class_subjects] => Array
                (
                    [0] => Array
                        (
                            [cs_map_id] => 81
                            [subject_name] => 11 Engllish
                            [subject_checked] => 1
                            [teacher_cs_id] => 81
                        )

                )

        )
[1] => Array
    (
        [class_id] => 3
        [class_name] => III
        [class_checked] => 1
        [class_subjects] => Array
            (
                [0] => Array
                    (
                        [cs_map_id] => 155
                        [subject_name] => Hidi
                        [subject_checked] => 1
                        [teacher_cs_id] => 155
                    )

                [1] => Array
                    (
                        [cs_map_id] => 156
                        [subject_name] => 11 Maths
                        [subject_checked] => 1
                        [teacher_cs_id] => 156
                    )

                [2] => Array
                    (
                        [cs_map_id] => 157
                        [subject_name] => 11 Science
                        [subject_checked] => 1
                        [teacher_cs_id] => 157
                    )

            )

    )

)

我想从键[class_id] 中一一获取所有值,并将这些值推送到数组$data 中。但是收到警告

Warning: Invalid argument supplied for foreach()

我不明白我的代码有什么问题。任何人都可以帮助我改进我的代码并将值附加到新数组中吗?提前致谢。我的代码如下:

 $prev_map_data  = $objTeacherClassesSubjects->GetClassSubjectMappingsbyTeacherId ($request, $teacher_class_subjects_error_messages);
   foreach($prev_map_data as $map_id) {
              $cls_data[] = $map_id['class_id'];
          }
    }

【问题讨论】:

  • $prev_map_data 似乎不是一个数组。 var_dump它。
  • 你检查过你有非空数组$prev_map_data吗?

标签: php arrays multidimensional-array associative-array


【解决方案1】:

试试这个代码

$teacher_class_subjects_error_messages);
   foreach($prev_map_data as $iKey => $iVal) {
              $cls_data[] = $iVal['class_id'];
          }
    }

【讨论】:

    【解决方案2】:

    $prev_map_data 不是数组。用var_export($prev_map_data);看是不是数组

    【讨论】:

      【解决方案3】:
      if(!empty($prev_map_data) && is_array($prev_map_data)) {
        foreach($prev_map_data as $key=>$map_id) {
           if(is_array($map_id))
             $cls_data[] = $map_id['class_id'];
           else
             echo '$map_id is not an array!';
        }
      } else {
        echo '$prev_map_data is not an array or it is empty!';
      }
      

      【讨论】:

        猜你喜欢
        • 2016-04-26
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 2015-02-06
        • 1970-01-01
        • 2020-01-01
        • 1970-01-01
        • 2011-12-19
        相关资源
        最近更新 更多