laravel返回页面一个数组,还要再compact()一次吗?
本文介绍了laravel返回页面一个数组,还要再compact()一次吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
laravel返回页面一个数组,还要再compact()一次吗?
demo:
public function index()
{
$articles = user()->articles;
$multiplied = $articles->map(function ($item, $key) {
$item->tags = ['foo', 'bar'];
return $item;
});
$newArticles = $multiplied->all();
dd($newArticles); //是一个数组
return view('articles', compact('newArticles'));
}
dd($newArticles)
的结果是这样:
array:2 [▼
0 => Article {#498 ▶}
1 => Article {#501 ▶}
]
问题:
最后一句返回到视图的语句怎么不加compact()不行?
return view('articles', $newArticles);//这样写不行,会显示Undefined variable: newArticles
return view('articles', compact('newArticles'));//$newArticles已经是数组了,怎么还要加一个compact()?
解决方案
这个是其实说到底是 函数 extract
的使用问题, 之所以你在视图的上下文中可以使用到newArticles
, 就是它的作用。
extract
会把关联数组 将变量从数组中导入到当前的符号表中。
如
$arr = ['a' => '1', 'b' => '2'];
extract($arr);
var_dump($a, $b);
所以,你肯定想在视图中有个变量指向这个数组,而不是把这个数组整个 extract
到视图里,如果不compact
,你都没法循环这个文章列表了。
如果不加,你还是需要传入一个数组, 如 ['articles' => $newArticles]
。
这篇关于laravel返回页面一个数组,还要再compact()一次吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文