PHP 数据提取在数组上不起作用


PHP Extract Not Working on Array

我正在尝试将我的$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);

提取方法在$this->错误字符串上工作正常,但在任何数组(如 $hasImages->arr)上都不起作用。 它似乎没有在本地上下文中创建变量。

如何将数组放入函数中?

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']等键访问它可能更具可读性。

>$viewData需要是一个关联数组。数组的键在被"提取"后将是变量的名称。