Php 拉威尔罐头';t从请求调用数组键

Php 拉威尔罐头';t从请求调用数组键,php,laravel,Php,Laravel,这是我的密码 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Symfony\Component\HttpFoundation\Response; class LoginController extends Controller { public function login(Request $request)

这是我的密码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Symfony\Component\HttpFoundation\Response;


class LoginController extends Controller
{
    public function login(Request $request) {
        $response = $request->all();
        print_r($response);
        $email = '';
        $password = '';
        foreach($response as $item) {
          $email = $item['email']
        }
        if($this->checkIfValid($email, $password) == true)  {
          $user = DB::Select('select * from user where email = ?', ['email' => $email]);
          var_dump($user);
        } else {
          return response()->json(['error' => 'Cant validate email and/or password']);
        }
    }

    private function checkIfValid($email, $password)  {
      if($email != '' && $password != '')  {
          echo('test');
          if(filter_var($email, FILTER_VALIDATE_EMAIL) == True) {
            echo('test2');
            return true;
          }
      } else {
        return false;
      }
    }

    private function checkEmailExists($email, $dbemail) {
      if($email == $dbemail)  {
        return true;
      } else {
        return false;
      }
    }
}

不需要循环$response。你可以这么做

$email = $response['name'];
或者直接请求实例

$email = $request->email;
您可以使用Laravels验证,而不是编写自定义验证逻辑。比如:

public function login(Request $request) {

   $request->validate([
        'email'    => 'required|string|email',
        'password' => 'required|string'
   ]);

   ...
}
array:3 [▼
  "_token" => "r3hr..."
  "email" => "john.doe@gmail.com"
  "password" => "1234"
]
或者只是检查请求中是否存在这些值

if ($request->has(['email', 'password'])) {
    ...
}
更新以回答评论中的作者问题

假设您
dd($response)
得到如下结果:

public function login(Request $request) {

   $request->validate([
        'email'    => 'required|string|email',
        'password' => 'required|string'
   ]);

   ...
}
array:3 [▼
  "_token" => "r3hr..."
  "email" => "john.doe@gmail.com"
  "password" => "1234"
]
当你看到这个的时候

foreach($response as $item) {
    // $item here is the value 
    $email = $item['email']; // you can't do this

    $email = $item; // this you could do but it would overwrite each time
}
但是当我打印r($response)时,它会给出这个输出数组([0]=>{“email”:”cvsshred7@gmail.com,“密码”:“测试”})