2

我正在尝试将我的 $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。它似乎没有在本地上下文中创建变量。

如何将数组放入我的函数中?

4

2 回答 2

5

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']方法内部的键访问它。

于 2012-08-12T13:16:16.530 回答
2

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

于 2012-08-12T13:16:27.543 回答