繁体   English   中英

数组没有为 foreach 循环提供正确的输出

[英]Array is not give proper output for foreach loop

我不确定这些问题是什么意思,所以任何建议将不胜感激。

foreach ($workerdata as $key => $value) {
    $eductions = WorkerCategories::select('Worker_type')->where('Workertype_id','=',$value)->first();
        
    $worker =  $eductions->Worker_type;
    $demo = array($worker);
    print_r($demo);
    $users['worker_category'] = $demo;
}      

exit();

输出:

Array
(
    [0] => Apartment Prepping
)
Array
(
    [0] => Carpenter
)

我想要:

Array
(
    [0] => Apartment Prepping
)
Array
(
    [1] => Carpenter
)

这次真是万分感谢。

每次调用array($worker) ,都会创建一个与之前无关的新数组,这就是索引保持0

foreach ($workerdata as $key => $value) {
    $eductions = WorkerCategories::select('Worker_type')->where('Workertype_id','=',$value)->first();

    $users['worker_category'][] = $eductions->Worker_type; //push to array worker type.
}      

exit();

print_r($users['worker_category']);

Array
(
    [0] => Apartment Prepping
    [1] => Carpenter
)

在你的 foreach 循环数组中($worker); 每次迭代都会创建一个新数组,因此您会得到 [0] 索引数组。
为了解决这个问题,您必须手动设置索引值。 请参阅波纹管代码。

$index=0;
foreach ($workerdata as $key => $value) {
    $eductions = WorkerCategories::select('Worker_type')->where('Workertype_id','=',$value)->first();
        
    $worker =  $eductions->Worker_type;
    $demo = array($index++ => $worker);
    print_r($demo);
    $users['worker_category'] = $demo;
}      

exit();

输出:


Array
(
    [0] => Apartment Prepping
)
Array
(
    [1] => Carpenter
)

我们应该在这里做的第一件事是

$workerdata = array_values($workerdata);

这样,我们就不需要多次打数据库了。 只需查询我们拥有的所有工作人员 ID

$eductions = WorkerCategories::select(['Worker_type'])->whereIn('Workertype_id',$workerdata)->get();

定义一个空数组来存储您的值

$user = [];

然后遍历你的结果

foreach($eductions as $eduction){
     $user[] = $education->worker_category;
}
print_r($user);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM