Laravel 5.1 in_array工作不正常?

时间:2015-11-08 20:58:14

标签: php laravel

我也在尝试使用in_array方法检查特定数组是否包含特定值。但由于某种原因,它似乎无法正常工作。

@if (in_array(Auth::id(), $likedUsers))
        <p>yes</p>
@endif
    <?php echo Auth::id() ?>
    <?php dd($likedUsers) ?>

我的2次转储的结果:

The results

如您所见,数组包含值。

1 个答案:

答案 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) ?>