【问题标题】:PHP Extract Not Working on ArrayPHP提取不适用于数组
【发布时间】:2012-08-12 13:12:44
【问题描述】:

我正在尝试将我的 $viewData 放入局部变量中。这是我的功能:

function view($layout, $view, $var)
{

    extract($var);
    include($layout);

}

这是我的使用方法:

$viewData = array($hasImages->arr, $latest->arr, $mostViewed->arr, $all->arr, $this->error);

$this->view('/view/shared/layout.php', '/view/home.php', $viewData);

extract 方法适用于 $this->error 字符串,但不适用于任何数组,例如 $hasImages->arr。它似乎没有在本地上下文中创建变量。

如何将数组放入函数中?

【问题讨论】:

    标签: php oop extract


    【解决方案1】:

    extract() 需要一个关联数组,因此它具有在其调用范围内派生变量名称的键。

    // Pass in an associative array
    $viewData = array(
      'hasImages' => $hasImages->arr,
      'latest' => $latest->arr,
      'mostViewed' => $mostViewed->arr,
      'all' => $all->arr, 
      'error' => $this->error
    );
    
    // After extract(), will produce
    $hasImages
    $latest
    $mostViewed
    $all
    $error
    

    但是,我会质疑使用 extract() 的效用。相反,使用上述关联数组可能更具可读性,并通过方法中的 $var['mostViewed']['something'] 等键访问它。

    【讨论】:

      【解决方案2】:

      $viewData 需要是一个关联数组。数组的键将是变量的名称,一旦它们被“提取”。

      【讨论】:

        猜你喜欢
        • 2015-03-31
        • 1970-01-01
        • 2012-07-29
        • 2015-05-03
        • 2013-12-15
        • 2013-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多