如何在编码器中打印从控制器到视图传递的多维数组


How to print the passed multidimensional array from controller to view in codeigniter?

我在使用多维数组时访问/创建foreach语句有问题。

在我的控制器中,我有以下内容:

$data = array();    
$temp = array();
           ...
    some codes here
           ...
array_push($data, $temp);
$this->load->view('view', $data);

$data数组包含如下内容:

Array(
[0]=>
    Array(
        [information]=>
            Array(
                [name]=>John Doe
                [age] =>21
            )
        [data]=>
            Array(
                [earnings]=>
                    Array(
                        [salary]=>21000
                        [bonus]=>1000
                        )
                [deductions]=>
                    Array(
                        [tax]=>1000
                        [loan]=>0
                    )
            )
    )
[1]=>
    Array(
        [information]=>
            Array(
                [name]=>George Read
                [age] =>23
            )
        [data]=>
            Array(
                [earnings]=>
                    Array(
                        [salary]=>20000
                        [bonus]=>1000
                        )
                [deductions]=>
                    Array(
                        [tax]=>990
                        [loan]=>200
                    )
            )
    )

)

我应该做些什么才能打印/回显数据?非常感谢您的帮助。

如果您试图访问控制器中分配给$data的变量,则使用数组的索引作为变量。如果你想回显视图中的变量,你可以使用

echo $0['information']['name'];

如果想使用Foreach循环,可以使用嵌套的Foreach循环。但在这种情况下,最好将$temp数组分配给控制器

中的特定变量。控制器

$data['temp_array'] = $temp;

那么foreach循环看起来像这样:

<<p> 视图/strong>
foreach ($temp_array as $array_name => $array) {
    echo $array_name;
    foreach ($array as $key => $value) {
        echo $key ': ' . $value;
    }
}

关于循环遍历多维数组的信息,请参阅此页。

首先在控制器文件中定义数组像这样:

$array = array(
                        0 => array(
                                "foo" => "bar",
                                  42    => 24,
                                "multi" => array(
                                        "dimensional" => array(
                                            "array" => "foo"
                                                        )
                                                )
                                    ),
                        1 => array(
                                "foo" => "bar",
                                   42    => 24,
                                "multi" => array(
                                        "dimensional" => array(
                                                        "array" => "foo"
                                                                )
                                                )
                                    )
                );

现在的问题是,如何访问[0]或[1]!为此,将该数组赋值给$data['arbitrary_variable']

在视图文件中,你可以直接使用$arbitrary_variable作为数组。

控制器代码:

public function index() {
 $data['magic'] =  $array = array(
                        0 => array(
                                "foo" => "bar",
                                  42    => 24,
                                "multi" => array(
                                        "dimensional" => array(
                                            "array" => "foo"
                                                        )
                                                )
                                    ),
                        1 => array(
                                "foo" => "bar",
                                   42    => 24,
                                "multi" => array(
                                        "dimensional" => array(
                                                        "array" => "foo"
                                                                )
                                                )
                                    )
                );

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

视图代码:

<?php
print_r($magic);
echo '<br/>';
echo $magic[0]['foo'];
?>

这里的想法是把你想要的数组放到另一个数组中,即不直接赋值给$data,而是赋值给data

您应该做以下更改:

1)你应该尝试添加一个元素到你传递给视图的数据数组中,这样你就可以访问该元素并循环它。

$data = array();    
$temp = array();
    //some codes here
array_push($data['anametoaccess'][], $temp);    //this will give us a element name to access and loop the array
$this->load->view('view', $data);
2)这是视图的代码:
foreach( $anametoaccess as $key => $each ){
    $information        = $each['information']; //now you have the information array in $informationarray
    $earnings           = $each['data']['earnings']; 
    $deductions         = $each['data']['deductions'];
}