Php Codeigniter将动态数据从控制器传递到视图。并将值映射到控制器数组变量
我想要从控制器到视图的数组是动态的 假设 控制器 视图(main.php) 现在控制器中的$data数组将是:Php Codeigniter将动态数据从控制器传递到视图。并将值映射到控制器数组变量,php,codeigniter,Php,Codeigniter,我想要从控制器到视图的数组是动态的 假设 控制器 视图(main.php) 现在控制器中的$data数组将是: array (size=6) 'Car' => array (size=1) 0 => object(stdClass)[31] public 'frontend_id' => string '3' (length=1) public 'sub_category_id' => string '3' (length=1
array (size=6)
'Car' =>
array (size=1)
0 =>
object(stdClass)[31]
public 'frontend_id' => string '3' (length=1)
public 'sub_category_id' => string '3' (length=1)
public 'category_id' => string '3' (length=1)
public 'name' => string 'Car' (length=3)
public 'slug' => string 'car' (length=3)
public 'parent_id' => string '1' (length=1)
public 'description' => string '' (length=0)
public 'status' => string '1' (length=1)
当我在视图中循环通过$category
时,我可以得到如下汽车价值:
foreach($category as $val) {
$name = $val['name']; //prints car
foreach($name as $value) { //how to map $name to the 'car' array that is passed from controller. It say invalid argument supplied for foreach
}
}
数组
$a
应该是
$a[0] = array('category_id'=>'3', 'name'=>'car');
$a[1] = array('category_id'=>'5', 'name'=>'bike');
$data['category'] = $a;
试试这个你的控制器应该是:-
$res= $data = [];
$a = array(array('category_id'=>'3', 'name'=>'car'),array('category_id'=> '5', 'name'=>'bike'));
foreach($a as $val){
$res[$val['name']] = $this->home_model->get_product($val['category_id']);
}
$data['category'] = $res;
$this->load->view('main',$data);
foreach($data['category'] as $val){
foreach($val['name'] as $value){
// do your stuff
}
}
您的视图应为:-
$res= $data = [];
$a = array(array('category_id'=>'3', 'name'=>'car'),array('category_id'=> '5', 'name'=>'bike'));
foreach($a as $val){
$res[$val['name']] = $this->home_model->get_product($val['category_id']);
}
$data['category'] = $res;
$this->load->view('main',$data);
foreach($data['category'] as $val){
foreach($val['name'] as $value){
// do your stuff
}
}
在
$val['name']
之前添加$
。请参阅下面的代码
你的观点
foreach($category as $val)
{
foreach($$val['name'] as $value){
}
}
foreach ($categorys_new as $category) {
print_r($category);
echo "<br>";
}
我用你的数据测试了代码。很好。所以这应该行得通 我的测试代码 输出
Array ( [0] => Array ( [name] => car [category_id] => 8 ) [1] => Array ( [name] => bike [category_id] => 10 ) )
在您的情况下-作为解决方案 在控制器中
$a = array(
array('category_id'=>'3', 'name'=>'car'),
array('category_id'=> '5', 'name'=>'bike')
);
$data['category'] = $a;
foreach($a as $val)
{
$name = $val['name'];
$category_id = $this->home_model->get_product($val['category_id']);
$NewVal[] = array(
'name' => $name,
'category_id' => $category_id
);
}
$data['category_new'] = $NewVal;
在视图中
foreach($category as $val)
{
foreach($$val['name'] as $value){
}
}
foreach ($categorys_new as $category) {
print_r($category);
echo "<br>";
}
foreach($categorys\u新设为$category){
印刷品(类别);
回声“
”;
}
对不起,我忘了写信。但我已经传递了数据。我将编辑问题。请尝试在控制器中打印$a数组。并查看阵列的外观控制器中的阵列显示正常,因为汽车不是array@user254153你能再清理一下吗。我不清楚,$data[$val['name']=$this->home\u model->get\u product($val['category\u id')代码>这和您需要在视图中作为输出的内容。请解释好的,我将编辑这个问题。@user254153也显示转储的值。它不起作用$无法在视图中访问数据['category'.@user254153检查此outAccepted答案是否简短且有效。谢谢你的帮助。