在数组中查找特定关键字时遇到问题。我正在使用Laravel。
我正在尝试查找具有特定关键字的特定帖子,与twitter函数完全相同。
访问www.foobar.com/shoutouts/$hashtag时,执行以下功能:
public function shoutoutSpecific($hashtag) {
$hashtag = '#' . $hashtag;
$shoutouts = Shoutout::orderBy('created_at', 'DESC')->get();
foreach($shoutouts as $shoutout) {
if (array_search($hashtag, $shoutout->hashtag) !== false) {
$shoutouts2 = $shoutouts2 . $shoutout;
}
}
return view('shoutout', compact('shoutouts2'));
}
shoutout-> hashtag的数据库表包含以下示例
a:1:{i:0;s:5:"#test";}
因此,当访问www.foobar.com/shoutouts/test时,该函数应该找到具有#test标签的特定shoutout,从而将这些标记抛出到一个可以在视图中循环的数组中。
然而,当我访问www.foobar.com/shoutouts/test时,我得到了
array_search() expects parameter 2 to be array, string given
我不明白,因为第二个参数是数据库中的一个数组。
所有帮助表示赞赏。
答案 0 :(得分:0)
a:1:{i:0;s:5:"#test";}
的序列化值为:
array(1) {
[0]=> string(5) "#test"
}
首先,您必须使用ie unserialize($string)
函数对其进行反序列化。之后array_search
应按预期工作。
Laravel可以通过定义您希望在访问时将哪些属性转换为json来自动执行此操作:
protected $casts = [
'hashtag' => 'array'
];
有关此内容的更多信息:https://laravel.com/docs/5.3/eloquent-mutators#array-and-json-casting