2

多次元配列をビューに渡すにはどうすればよいですか?コントローラコード

       public function index(){

           data['navs'] =   array( 
            'name' => array('one', 'two', 'three'),
            'link' => array('one', 'two', 'three'));

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

コードを表示

        <?php if ($navs) {
                foreach ($navs as $nav) {
                echo('<li><a href="' . $nav->link . '">' . $nav->name . '</a></li>');
                }
            }?>
4

3 に答える 3

4

まず、正しい方法でアレイを構築する必要があります。次のようになります。

$data['navs'] = array( array(  'name'    =>  'one',
                               'link'    =>  'linkone'),

                       array(  'name'    =>  'two',
                               'link'    =>  'linktwo')    
                    );
$this->load->view('adminView', $data);

次に、あなたの見解では:

foreach($navs as $n){
  echo "<li><a href='{$n['link']}'>{$n['name']}</a></li>";
}
于 2012-06-17T14:06:10.903 に答える
1

ビューに表示されたら、データをオブジェクトプロパティではなく、配列要素として参照します(オブジェクトの配列ではなく、配列の配列を渡します)。コントローラに基づくと、ビューコードは次のようになります。

foreach ($navs as $nav) {
    echo('<li><a href="' . $nav['link'] . '">' . $nav['name'] . '</a></li>');
}

ただし、$nav['link']と$nav['name']は2つの配列であるため、正しい結果は出力されません。それらの要素のいずれかを呼び出すか、それに応じてコントローラーを変更する必要があります。

于 2012-06-17T13:40:08.253 に答える
-2

PHPでcodeigniterのコントローラーを使用して動的配列値をフェッチする方法

Array
(
    [id] => 2
    [name] => Wellness & Spa
    [isSelected] => true
    [subModules] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [name] => Spa1
                    [isSelected] => true
                    [0] => object:81
                )

            [1] => Array
                (
                    [id] => 2
                    [name] => Spa2
                    [isSelected] => true
                    [0] => object:82
                )

            [2] => Array
                (
                    [id] => 3
                    [name] => Wellness
                    [isSelected] => true
                    [0] => object:83
                )

        )

)
于 2016-08-11T17:19:05.540 に答える