2016-11-23 82 views
0

首先,我经历了许多其他类似的事情,但他们从来没有为我工作的堆栈溢出帖子。功能内的PHP的foreach

我使用的代码点火器在我的网页之一,我需要使用从我的控制器发送到我的网页的数组的函数内

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

错误是说尽管$数据库阵列未申报从控制器发送信息。

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

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

当使用相同的for循环它的工作原理的功能之外,但问题是我需要它的功能或生病了使用if语句的额外的代码行400多个。

+3

'$ database'在不同的范围内,你必须在你的函数中作为参数传递或者在一个对象属性 –

+0

你认为'$ Brand'是什么?单个字符串或数组? –

+0

此外,该功能没有任何回报。 –

回答

1

$数据库是品牌名称范围之外(),所以你你需要将它传递到功能,像这样:它传递给视图之前

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

我也建议你做的所有的数据处理。在我看来,视图不应该有函数,并且应该尽可能少的PHP代码。

+0

嘿,这工作,所以谢谢。另外,该功能不适用于数据处理。它用于根据重定向的页面显示不同的值集合。 – Yunath

0

型号文件变化:

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

控制器:

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

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

希望这有助于

0

尽量写更多的自我描述干净的代码,

  • getBrandNames()而不是品牌名称
  • $brandNames[] = $value['brand'];改为$ Brand = $ value ['Brand']; (你有很多地方改变“品牌”。
  • 使用空间并正确地对齐的代码,fn() {

一些示例代码

function getBrandNames($data = []) { 
    $brandNames = []; 
    if ($data) { 
     foreach ($data as $value) { 
      $brandNames[] = $value['brand']; 
     } 
    } 

    return $brandNames; 
} 

//通$数据库中的数据作为参数,或让他们在函数内部调用相关函数,而不是$数据库使用数据集的确切名称; ex $ brandData