【问题标题】:Invalid argument supplied for foreach() line 48为 foreach() 第 48 行提供的参数无效
【发布时间】:2017-03-05 03:12:51
【问题描述】:

如何修复此错误消息:

遇到 PHP 错误
严重性:警告消息:无效
为 foreach() 提供的参数
文件名:views/editpages.php
行号:48


第 48 行:<?php foreach ($pages as $pages_item): ?>


views/editpages.php

<div class="row-fluid">
            <div class="span12">


                <?php foreach ($pages as $pages_item): ?>

                <div class="widget-box">
                    <div class="widget-title"><h5>Pages</h5></div>
                    <div class="widget-content">

                    <?php echo form_open('cpages/editpagesupdate'); ?>
                    <table border="0" style="width: 100%; height: 90px;">
                        <tr>
                            <td>Pages Name</td>
                            <td><input type="text" name="pages_name" value="<?php echo $pages_item['pages_name']; ?>"></td>
                        </tr>
                        <tr>
                            <td>Create Date</td>
                            <td><input type="text" name="create_date" value="<?php echo $pages_item['create_date']; ?>"></td>
                        </tr>   
                        <tr>
                            <td>Order</td>
                            <td><input type="text" name="pages_order" value="<?php echo $pages_item['pages_order']; ?>"></td>
                        </tr>
                        <tr>
                            <td>View Content</td>
                            <td><textarea rows="3" cols="20" name="pages_content"><?php echo $pages_item['pages_content']; ?></textarea></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type="submit" class="edit" name="submit" value="SUBMIT"></td>
                        </tr>
                    </table>            
                    </div>
                </div>      

                <?php endforeach; ?>

            </div>
        </div>

控制器/Cpages.php

public function editpages() {

    $data['pagessuccess'] = '';

    $pages_id = $this->uri->segment(3);

    $data['pages'] = $this->Mpages->call_point_pages($pages_id);

    $this->load->view('editpages', $data); 

}

模型/Mpages.php

public function call_point_pages($pages_id)
{

    $this->db->where('pages_id', $pages_id);
    $query = $this->db->get('pages');
    //return $query->result_array();
    return $query->result_array();

}

【问题讨论】:

  • 根据你的 foreach 你得到 n 个表格和表格。但是所有表单操作都使用一种方法。检查你的代码是这个存档你的目的。例如:如果你在 foreach 中有 15 个数组,你会得到 15 个表格和 15 个表格。但是一个表单操作 URL。
  • @Davy .try 在 foreach 之前打印。 print_r($pages);出口;检查你得到什么数据
  • @Davy 我认为 $pages 没有数组数据
  • 有几件事要检查...您是否有一个 segment(3) 值,如果没有会发生什么?您是否正在检查查询是否返回了有效结果,即 $data['pages'] 中的内容是数组还是其他内容?我暗示能够通过检查每个步骤的结果来调试这些东西,并能够处理你所期望的异常。

标签: php codeigniter


【解决方案1】:

希望您已经根据此处发布的 cmets 和回复进行了调试并找出了问题..

这只是一个提示:

无论何时,您有一个应该返回数组的方法 - 您应该在该方法内有一个空数组声明。然后稍后将值/值分配给该数组。这样,您将始终能够在 foreach 循环中使用返回的值,而不必担心返回的值是否实际上是一个数组。

例如

public function call_point_pages($pages_id) {
    $pages = array();

    $this->db->where('pages_id', $pages_id);
    $query = $this->db->get('pages');

    if ($query->num_rows() > 0) {
        foreach($query->result() as $row) {
            $page = object2array($row);
            $pages[] = $page;
        }
        $query->free_result();
    }
    return $pages;
}

这看起来像很多代码,但它使我避免了运行时出现意外错误。

【讨论】:

    【解决方案2】:

    控制器/cpages.php

    public function editpages() {
        $data['pagessuccess'] = '';
        $pages_id = $this->uri->segment(3);
        $data['pages'] = $this->Mpages->call_point_pages($pages_id);
        $this->load->view('editpages', $data); 
    }
    

    模型/Mpages.php

    public function call_point_pages($pages_id) {
        $this->db->where('pages_id', $pages_id);
        $query = $this->db->get('pages');
        return $query->result();
    }
    

    只会得到一个结果,因为有一个 where 条件,这似乎是一个主键

    所以你的视图必须喜欢

    <div class="row-fluid">
    <div class="span12">    
    <div class="widget-box">
    <div class="widget-title"><h5>Pages</h5></div>
    <div class="widget-content">
    <?php echo form_open('cpages/editpagesupdate'); ?>
    <table border="0" style="width: 100%; height: 90px;">
    <?php foreach ($pages as $pages_item) { ?>
    <tr>
    <td>Pages Name</td>
    <td><input type="text" name="pages_name" value="<?php echo $pages_item->pages_name; ?>"></td>
    </tr>
    <tr>
    <td>Create Date</td>
    <td><input type="text" name="create_date" value="<?php echo $pages_item-   >create_date; ?>"></td>
    </tr>   
    <tr>
    <td>Order</td>
    <td><input type="text" name="pages_order" value="<?php echo $pages_item->pages_order; ?>"></td>
    </tr>
    <tr>
    <td>View Content</td>
    <td><textarea rows="3" cols="20" name="pages_content"><?php echo $pages_item->pages_content; ?></textarea></td>
    </tr>
    <tr>
    <td></td>
    <td><input type="submit" class="edit" name="submit" value="SUBMIT"></td>
    </tr>
    <?php } ?>
    </table>            
    </div>
    </div>      
    </div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-17
      • 2011-02-07
      相关资源
      最近更新 更多