为foreach()第140行提供的参数无效

时间:2017-09-26 04:58:46

标签: codeigniter

错误ON 140 ,为foreach()提供的参数无效,我不知道我该怎么做

  

MyController代码:

if ($data['ms']['mspr_no'] != '') {
    $mdpr = $this->input->post('mdpr');
    foreach ($mdpr as $key => $value1) {
        foreach ($mdpr[$key] as $idx => $value2) {
            if ($mdpr['mdpr_mspd_no'][$idx] != '') {
                $data['md'][$idx]['mdpr_no'] = $data['ms']['mspr_no'];

                if ($key == 'mdpr_net') {
                    $data['md'][$idx][$key] = ftodouble($value2);
                } else {
                    $data['md'][$idx][$key] = $value2;
                }
            }
        }
    }
}
  

我的表格促销视图:

    <?php
    if ($action == 'view') {
        if (isset($promo)) {
            foreach ($promo as $value) { ?>
                <tr>                                                      
                    <td><input type="text" name="mdpr[mdpr_mspd_no][]" class="form-control srstyle-ta-center mdpr_mspd_no" value="<?php echo $value['mdpr_mspd_no']; ?>" readonly /></td>
                    <td><input type="text" class="form-control msph_pl" value="<?php echo $value['msph_pl']; ?>" readonly/></td>
                    <td><input type="text" class="form-control msph_hjkk_net" value="<?php echo $value['msph_hjkk_net']; ?>" readonly/></td>
                    <td><input type="text" class="form-control msph_hjkj_net" value="<?php echo $value['msph_hjkj_net']; ?>" readonly/></td>
                    <td><input type="text" name="mdpr[mdpr_net][]" class="form-control mdpr_net srstyle-ta-right auto-numeric" value="<?php echo $value['mdpr_net']; ?>" readonly/></td>
                </tr><?php
            }
        }

    }
    ?>  

谢谢

2 个答案:

答案 0 :(得分:1)

  

“警告:提供的参数无效   foreach()“

由于nullfalse或参数不是数组

foreach($mdpr as $key => $value1){ 
             ^
            see var_dump($mdpr), 
            $mdpr is either null or false or not array you get above error

所以你可以做的是

$mdpr = $this->input->post('mdpr');
if(is_array($mdpr))
{
    foreach($mdpr as $key => $value1)
    { 
            // your remaining code goes here
    }
}else
{
         echo 'Bad data posted';
}

我们可以像这样重新生成此错误,例如

$ php -r 'foreach(null as $e){}'
PHP Warning:  Invalid argument supplied for foreach() in Command line code on line 1

/*false OR FALSE*/
$ php -r 'foreach(false as $e){}'
PHP Warning:  Invalid argument supplied for foreach() in Command line code on line 1

/* Not array */
$ php -r 'foreach("somestring" as $e){}'
PHP Warning:  Invalid argument supplied for foreach() in Command line code on line 1

我看到OP进行了编辑 - 行号:140 enter image description here

答案 1 :(得分:0)

使用if(is_array())验证这是一个要循环的数组。