首先,我经历了许多关于类似事情的其他堆栈溢出帖子,但它们从未为我工作过。
我在我的一个页面中使用代码点火器,我需要使用从我的控制器发送到我的页面的数组
function brandnames(){
foreach ($database as $value) {
$Brand = $value['Brand'];
}
错误是说尽管从控制器发送信息,$ database数组仍未声明。
$data["database"] = $this->Get_model->brandnames();
$this->view("update", $data);
当在函数之外使用相同的forloop它可以工作但问题是我在函数中需要它或者生成有400多行使用if语句的额外代码。
答案 0 :(得分:1)
$ database在brandnames()范围之外,所以你需要将它传递给函数,如下所示:
function brandnames($database){
foreach ($database as $value) {
$Brand = $value['Brand'];
}
$database = $data["database"];
brandnames($database);
我还建议您在将其传递给视图之前进行所有数据处理。在我看来,视图不应该具有功能,并且应该尽可能少地使用PHP代码。
答案 1 :(得分:0)
模型文件更改:
function brandnames(){
$Brand = array();
foreach ($database as $value) {
$Brand[] = $value['Brand'];
}
return $Brand;
}
控制器:
$data["database"] = $this->Get_model->brandnames();
$this->view("update", $data);
希望这有帮助
答案 2 :(得分:0)
尝试编写更多自我描述性的清洁代码,
getBrandNames()
代替品牌名称$brandNames[] = $value['brand'];
代替$ Brand = $ value ['Brand']; (你在许多地方改变了'品牌'。fn() {
一些示例代码
function getBrandNames($data = []) {
$brandNames = [];
if ($data) {
foreach ($data as $value) {
$brandNames[] = $value['brand'];
}
}
return $brandNames;
}
//将$ database数据作为参数传递,或者通过调用相关函数将它们放入函数中。而不是$ database使用数据集的确切名称; ex $ brandData