1

これは私を困惑させました。呼び出された配列を print_r すると、$item_pagesすべてのキーと値が正しく出力されます。ただし、その配列が foreach 内で使用されると、空になるようです。これは、foreach の外で print_r を実行したときの配列です。

Array ( [0] => 1 [1] => 6 [2] => 12 [3] => 15 [4] => 16 [5] => 17 [6] => 18 [7] => 19 [8] => 78 [9] => 79 [10] => 87 [11] => 90 [12] => 94 [13] => 95 [14] => 98 [15] => 99 [16] => 102 [17] => 103 [18] => 105 [19] => 107 [20] => 108 [21] => 110 [22] => 111 [23] => 112 [24] => 113 [25] => 114 [26] => 119 [27] => 120 [28] => 121 [29] => 125 [30] => 126 [31] => 134 [32] => 135 [33] => 136 [34] => 138 [35] => 142 [36] => 186 [37] => 193 [38] => 197 [39] => 198 [40] => 199 [41] => 206 [42] => 327 [43] => 452 [44] => 470 [45] => 487 [46] => 601 [47] => 614 [48] => 630 [49] => 684 [50] => 726 [51] => 727 [52] => 789 [53] => 871 )

コントローラーは次のとおりです。

    public function view_item_pages() {

    if ($this->input->is_ajax_request()) {

      $item_id = $this->input->post('item_id');
      $this->data['item_id'] = $item_id;
      $this->data['pages'] = $this->affiliate_model->get_all_affiliates();
      $this->data['item_pages'] = $this->item_model->get_item_pages($item_id);

      $this->load->view('/admin/item/pages', $this->data);

    }

  }

ビューは次のとおりです。

<fieldset>
    <table id="all-pages" class="table table-striped table-bordered">
        <thead>
          <tr>
            <th><input type="checkbox" class="checkbox" id="select_all"></th>
            <th>ID</th>
            <th>Name</th>
          </tr>
        </thead>
        <tbody>

        <?php foreach ($pages as $page): 

            $checked = FALSE;

            if (!empty($item_pages)) {
                if (in_array($page['aff_id'], $item_pages)) {
                    $checked = TRUE;
                }
            }
        ?>
              <tr>
                <td><?php echo form_checkbox('page', $page['aff_id'], $checked); ?></td>
                <td><?php echo $page['aff_id']; ?></td>
                <td><?php echo $page['name']; ?></td>
              </tr>

        <?php endforeach; ?>

        </tbody>
    </table>
</fieldset>

したがって、次のようにすると、配列が機能します。

    <?php print_r($item_pages); ?>

    <?php foreach ($pages as $page):

        $checked = FALSE;

        if (!empty($item_pages)) {
            if (in_array($page['aff_id'], $item_pages)) {
                $checked = TRUE;
            }
        }
    ?>

これを行うと、何も返されません。次のようになりecho '';ます。

   <?php foreach ($pages as $page):

        print_r($item_pages);

        $checked = FALSE;

        if (!empty($item_pages)) {
            if (in_array($page['aff_id'], $item_pages)) {
                $checked = TRUE;
            }
        }
    ?>
4

1 に答える 1

0

コントローラーで$pages. が空の場合、実行はビュー内のループに$pages入りません。foreach

$this->data['pages'] = $this->affiliate_model->get_all_affiliates();
print_r($this->data['pages']);
于 2012-10-25T16:21:14.537 に答える