PHP提取不适用于数组

use*_*388 2 php oop extract

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

这是我如何使用它:

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

$this->view('/view/shared/layout.php', '/view/home.php', $viewData);
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*ski 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
Run Code Online (Sandbox Code Playgroud)

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