【问题标题】:PHP foreach within a function函数内的 PHP foreach
【发布时间】:2016-11-23 19:19:56
【问题描述】:

首先,我浏览了许多其他关于类似事情的堆栈溢出帖子,但它们从未对我有用。

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

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

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

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

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

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

【问题讨论】:

  • $database 在不同的范围内。您必须在函数中作为参数传递或在对象属性中传递。
  • 您希望$Brand 是什么?单个字符串还是数组?
  • 另外,该函数没有任何返回值。
  • $Brand 是一个字符串。
  • 对费利佩来说,它不需要退货。我展示的代码只是相关部分。

标签: php database function codeigniter activerecord


【解决方案1】:

$database 在 brandnames() 范围之外,因此您需要将其传递给函数,如下所示:

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

我还建议您在将数据传递给视图之前进行所有数据处理。在我看来,视图不应该有函数,并且应该尽可能少地包含 PHP 代码。

【讨论】:

  • 嘿,这很有效,谢谢。此外,该功能不适用于数据处理。它用于根据重定向的页面显示一组不同的值。
【解决方案2】:

模型文件更改:

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

控制器:

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

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

希望对你有帮助

【讨论】:

    【解决方案3】:

    尝试编写更多自我描述的干净代码,

    • 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 使用数据集的确切名称;前 $brandData

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2014-05-29
      相关资源
      最近更新 更多