PHP foreach在一个函数中

时间:2016-11-23 19:19:57

标签: php database function codeigniter activerecord

首先,我经历了许多关于类似事情的其他堆栈溢出帖子,但它们从未为我工作过。

我在我的一个页面中使用代码点火器,我需要使用从我的控制器发送到我的页面的数组

function brandnames(){
foreach ($database as $value) {
    $Brand = $value['Brand'];
}

错误是说尽管从控制器发送信息,$ database数组仍未声明。

$data["database"] = $this->Get_model->brandnames();

$this->view("update", $data);

当在函数之外使用相同的forloop它可以工作但问题是我在函数中需要它或者生成有400多行使用if语句的额外代码。

3 个答案:

答案 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