在检查数组值是否存在时被清空 - laravel?
getting emptied while checking if an array value exists - laravel?
如果 $m
中不存在该 ID,我想插入 $courseCat
的 id
值。在下面的代码中,我觉得 $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);
如果 $m
中不存在该 ID,我想插入 $courseCat
的 id
值。在下面的代码中,我觉得 $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);