在第一次匹配时使用 foreach 循环而不是 return 进行搜索

Have search using foreach loop not return on first match

我想获取具有相同 refid 的所有记录,但我的 foreach 循环只是搜索,直到找到第一条记录并停止。

$data = Projekt1Db::select('refid', 'userid', 'passwd', 'uid', 'gid', 'homedir')->get();
        $inputs = \Request::all();
        foreach ($data as $id) {
            if ($id->refid == $inputs['refid']){
                return view('searchfound', [
                    'id' => $id]);
            }
        }

        if($inputs !== $id){
            return redirect()->back()->with('message', 'Refid not found');
        }
    }

有更多记录具有相同的 refid,但它只给了我第一条具有 refid 的记录。

在视图中:

<b>Refid:</b> {{$id->refid}}<br>
<b>Userid:</b> {{$id->userid}}<br>
<b>Password:</b> {{$id->passwd}}<br>
<b>UID:</b> {{$id->uid}}<br>
<b>GID:</b> {{$id->gid}}<br>
<b>homedir:</b> {{$id->homedir}}<br><br>

试试这个:

$newData = [];
foreach ($data as $id) {
     if ($id->refid == $inputs['refid']){
            $newData[] = $id;
     }
}
 return view('searchfound', [
                'newData' => $newData]);

@foreach($newData as $val)
  <b>Refid:</b> {{$val->refid}}<br>
  <b>Userid:</b> {{$val->userid}}<br>
  <b>Password:</b> {{$val->passwd}}<br>
  <b>UID:</b> {{$val->uid}}<br>
  <b>GID:</b> {{$val->gid}}<br>
  <b>homedir:</b> {{$val->homedir}}<br><br>
@endforeach

基本,改变

foreach ($data as $id) {
  if ($id->refid == $inputs['refid']){
    return view('searchfound', [
      'id' => $id]);
  }
}

$data = array();        
foreach ($data as $id) {
  if ($id->refid == $inputs['refid']){
    $data[] = $id;
  }
}
if (length($data) > 0) {
  var_dump($data);
} else {
  // nothing found
}

使用下面的代码作为您的 php 代码:

            $data = Projekt1Db::select('refid', 'userid', 'passwd', 'uid', 'gid', 'homedir')->get();
            $inputs = Request::all();

            $id_array = [];
            foreach ($data as $id) {
                if ($id->refid == $inputs['refid']){
                    $id_array[] = $id;
                }
            }

           if(count($id_array) == 0){
             return redirect()->back()->with('message', 'Refid not found');
           }
            else{
              return view('searchfound', ['id' => $id_array]);  
            }   

和下面的布局代码:

@foreach($id as $val)
  <b>Refid:</b> {{$val->refid}}<br>
  <b>Userid:</b> {{$val->userid}}<br>
  <b>Password:</b> {{$val->passwd}}<br>
  <b>UID:</b> {{$val->uid}}<br>
  <b>GID:</b> {{$val->gid}}<br>
  <b>homedir:</b> {{$val->homedir}}<br><br>
@endforeach

如果你有很多相同 refidid 的记录,最好使用 where 条件

    $data=Projekt1Db::where('refid','=', $inputs->refid);

foreach ($data as $id) {


}

那你就可以轻松循环对了