我也在尝试使用in_array方法检查特定数组是否包含特定值。但由于某种原因,它似乎无法正常工作。
@if (in_array(Auth::id(), $likedUsers))
<p>yes</p>
@endif
<?php echo Auth::id() ?>
<?php dd($likedUsers) ?>
我的2次转储的结果:
如您所见,数组包含值。
答案 0 :(得分:1)
这不是in_array()
的工作原理。您的数组包含对象,对象是包含用户ID的对象。 in_array()
将检查数组的确切元素,它不会检查元素的属性(在这种情况下是对象)。
它的确是这样的:
$isLikedUser = false;
foreach ($likedUsers as $likedUser) {
if ($likedUser == Auth::id()) {
$isLikedUser = true;
}
}
但你需要这个:
$isLikedUser = false;
foreach ($likedUsers as $likedUser) {
if ($likedUser->user_id == Auth::id()) {
$isLikedUser = true;
}
}
您应该在控制器中执行此操作,然后将结果传递给您的视图,如下所示:
$view = View::make('viewname')->with('isLikedUser', $isLikedUser);
请注意,使用with()
函数时,您不必为视图变量指定相同的名称,例如:->with('variableNameInView', $usedVariableValue);
然后您的视图将有一个变量,其中包含您可以检查的第一个参数的名称:
@if ($isLikedUser)
<p>yes</p>
@endif
<?php echo Auth::id() ?>
<?php dd($likedUsers) ?>