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代码>取而代之。