Php 为什么$username变量在if($username=request(';createdBy';){中显示未定义但不显示错误?

Php 为什么$username变量在if($username=request(';createdBy';){中显示未定义但不显示错误?,php,laravel,Php,Laravel,我不理解在访问特定url时返回用户创建的帖子的代码。我有两个疑问 首先,您知道变量$username是如何存在于“if($username=request('createdBy')){”中的吗?就在它显示未定义之前 另一个疑问是,您知道如果用户访问“”,如何只返回用户创建的帖子(应该返回),而不是所有用户的所有帖子吗?因为在if(username=request(createdBy))中$posts变量不会被新值覆盖,因此$posts值不应该显示所有用户的所有帖子 public function

我不理解在访问特定url时返回用户创建的帖子的代码。我有两个疑问

首先,您知道变量
$username
是如何存在于“
if($username=request('createdBy')){
”中的吗?就在它显示未定义之前

另一个疑问是,您知道如果用户访问“”,如何只返回用户创建的帖子(应该返回),而不是所有用户的所有帖子吗?因为在
if(username=request(createdBy))中
$posts变量不会被新值覆盖,因此$posts值不应该显示所有用户的所有帖子

public function index(Category $category) 
{
    if($category->exists){
        $posts = $category->posts()->latest();
    }else{
        $posts = Post::latest();
    }
    dd($username); // shows Undefined variable: username

    if($username = request('createdBy')){
        dd($username); // shows john if the url is "http://proj.test/posts?createdBy=john"
        $user = User::where('name', '=', $username)->first();
        $posts->where('user_id','=', $user->id);
    }
    $posts = $posts->get();
    return view('posts.index', compact(('posts')));
}

=
是赋值运算符。
$username
已赋值,则
if
检查
$username
的值是否真实

没有理由在条件块中重新分配$post的值。$post是一个查询生成器对象,
$post->where()
正在修改该对象


我建议您仔细阅读PHP手册。

在if语句中使用
=
==
进行检查,而不是使用reassignment@Dorvalla,两者都在进行检查…
=
==
在这种情况下,由于尚未分配
$username
,将导致未定义的错误。整点这里的
=
的作用是分配username变量,然后检查它是否真实。谢谢,但是如果是“if($username=request('createdBy')”,就没有必要了?不能仅仅是“$username=request('createdBy')”?这与执行
$username=request('createdBy');if($username)是一样的{…
。首先计算括号内的内容。