Php 数组未为foreach循环提供正确的输出

Php 数组未为foreach循环提供正确的输出,php,arrays,Php,Arrays,我不知道这些问题意味着什么,因此任何建议都将不胜感激 foreach($workerdata作为$key=>$value){ $eductions=WorkerCategories::select('Worker_-type')->where('Workertype_-id','=',$value)->first(); $worker=$educations->worker\u类型; $demo=阵列($worker); 打印(演示); $users['worker_category']=$de

我不知道这些问题意味着什么,因此任何建议都将不胜感激

foreach($workerdata作为$key=>$value){
$eductions=WorkerCategories::select('Worker_-type')->where('Workertype_-id','=',$value)->first();
$worker=$educations->worker\u类型;
$demo=阵列($worker);
打印(演示);
$users['worker_category']=$demo;
}      
退出();
输出:

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

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

我想:

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

谢谢您的支持。

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

foreach($workerdata作为$key=>$value){
$eductions=WorkerCategories::select('Worker_-type')->where('Workertype_-id','=',$value)->first();
$users['worker\u category'][=$eductions->worker\u type;//推送到数组worker type。
}      
退出();
打印($users['worker\u category']);
排列
(
[0]=>公寓准备
[1] =>木匠
)

在foreach循环数组中($worker);每次迭代都会创建一个新数组,因此您将获得[0]indexd数组。
要解决此问题,必须手动设置索引值。参见下面的代码

$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
(
    [0] => Carpenter
)

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);

也许你想使用
$users['worker\u category'][]=$worker取而代之。