使用CodeIgniter将数组从Controller传递到View

时间:2017-06-03 00:43:29

标签: php arrays codeigniter foreach

我正在尝试将编号为0到9的数组传递给我的视图。但是,当我尝试回显特定键或foreach所有键来显示数据时,没有任何显示。

我的控制器:

session_start()

输出:

//Update to not view tutorial           
$.ajax({
    type: "POST",
    url: 'http://192.168.1.75/php/script.php',
    success: function(data){
        console.log(data);
    }
});

我的观点:

    $i=0;
    $cleanarray = array();

    foreach ($phrase as $innerphrase) {
        if (is_array($innerphrase)) {
            foreach ($innerphrase as $value) {
                $cleanarray[$i] = $value;
                $i++;
            }
        }
    }

    $this->load->view('blogview', $cleanarray);

然而没有任何表现。我也尝试过以同样的方式使用print_r。我知道CodeIgniter不允许我传递控制器中的变量,而是允许我直接访问数组中的键。

最终我想迭代数组并显示所有结果,但我试图开始"小"并至少获取数组的单个元素以传递给视图。如果有人可以解释为什么这不起作用,那么使用for或foreach迭代数组会做什么,我将非常感激。

我知道这个问题可能已被多次回答,但对于我的生活,我无法将对这些问题的回答推断为适合我的解决方案。

5 个答案:

答案 0 :(得分:1)

使用此代码:

<强>控制器

$i=0;
$cleanarray = array();

foreach ($phrase as $innerphrase) {
    if (is_array($innerphrase)) {
        foreach ($innerphrase as $value) {
            $cleanarray[$i] = $value;
            $i++;
        }
    }
}

$array2 =  array();  // create a new array
$array2['contents']= $cleanarray; // add $cleanarray to the new array
$this->load->view('blogview', $array2); // pass the new array as the parameter

内部视图文件

echo(“内容:”);

//打印$ cleanarray中的元素

foreach($ contents as $ val)

echo "$val<br/>";

注意:我们无法在此处访问$ array2。相反,请使用'$ contents []'。

答案 1 :(得分:0)

根据我的知识,codeigniter没有数据从控制器传递到视图,所以你可以尝试下面的代码,我必须确保它有效。

在您的控制器中

    $i=0;
    $cleanarray = array();
    foreach ($phrase as $innerphrase) 
    {
         if (is_array($innerphrase)) 
         {
                foreach ($innerphrase as $value) 
                {
                        $cleanarray[$i] = $value;
                        $i++;
                }
         }
    }
    $data['cleanarray'] = $cleanarray
    $this->load->view('blogview', $data);

在您的视图中打印数组print_r($cleanarray);我确信此代码可以正常运行。

快乐编码:)

答案 2 :(得分:0)

这不是您访问数组变量的方式。 $不表示数组,它表示变量名的开头。访问$cleanarray的第一个元素的语法是$cleanarray[0]

我承认我不是一个codeigniter编码器,所以我甚至不知道你是否在&#34;视图&#34;中访问它。由于控制器中的$this业务,我猜不到。当然,其他人可以提供这些细节。

答案 3 :(得分:0)

在控制器中创建$ cleanarray后应用此

$data['cleanarray'] = $cleanarray;//assign $cleanarray to $data
$this->load->view('blogview', $data);//pass $data to your view

在视图中访问您的阵列应用此

<h2><?php echo $cleanarray[0]; ?></h2>

答案 4 :(得分:-1)

这是我的建议:

我不建议您使用数字作为变量名。要解决此问题,您可以使用“_”开头。例如:$_1

所以在循环更改$cleanarray[$i] = $value;$cleanarray['_'.$i] = $value;

当然,您需要在查看echo $_0;

上调用它