在检查数组值是否存在时被清空 - laravel?

getting emptied while checking if an array value exists - laravel?

如果 $m 中不存在该 ID,我想插入 $courseCatid 值。在下面的代码中,我觉得 $m 数组是每次都被清空,因此,所有 id 都被插入到 $m 中,作为 dump($m) indicates.How 的结果,我可以解决这个问题吗?

$m=[];
$courseCat = MyCourse::where('course_id', $key['courseId'])->get()->toArray();
foreach($courseCat as $k=>$c){
  // dump($courseCat);
    if(!in_array($c['id'],$m)){
           array_push($m,$c['id']);
      }
}
//dump($m); 

dump($courseCat); 显示如下结果

    array:2 [
      0 => array:19 [
        "id" => 2
        "course_id" => 18
      ]
      1 => array:19 [
        "id" => 3
        "course_id" => 18
      ]                                   
    ]
   array:2 [
      0 => array:19 [
        "id" => 2
        "course_id" => 18
      ]
      1 => array:19 [
        "id" => 3
        "course_id" => 18
      ]                                   
    ]
    array:2 [
      0 => array:19 [
        "id" => 5
        "course_id" => 1
      ]                                
      1 => array:19 [
        "id" => 6
        "course_id" => 1
      ]
    ]
    array:2 [
      0 => array:19 [
        "id" => 5
        "course_id" => 1
      ]                                 
      1 => array:19 [
        "id" => 6
        "course_id" => 1
      ]
    ]

dump($m) 显示以下结果:

array:2 [
  0 => 2
  1 => 3
]
array:2 [
  0 => 2
  1 => 3
]
array:2 [
  0 => 6
  1 => 5
]
array:2 [
  0 => 6
  1 => 5
]

下面附上的图片是查询的结果MyCourse::where('course_id', $key['courseId'])->get()

[enter image description here]1

[enter image description here]2

[enter image description here]3

预期结果:

dump($m) 应显示以下结果

[0=>2,
1=>3,
2=>5,
3=>6]

如果您想要查询中某列的所有值,您可以使用 pluck:

MyCourse::where('course_id', $key['courseId'])->pluck('id')

现在您有了所有“id”的列表。

Laravel 8.x Docs - Database - Running Database Queries - Retrieving a List of Column Values pluck

我认为这是因为你有一个问题中没有显示的外循环。您需要在外循环之前声明$m

$m=[];

foreach($keys as $key){
    
    $courseCat = MyCourse::where('course_id', $key['courseId'])->get()->toArray();
    foreach($courseCat as $k=>$c){
      
        if(!in_array($c['id'],$m)){
               array_push($m,$c['id']);
          }
    }
    
}
dump($m);