如何在PHP中根据索引值将2D数组拆分为数组块
我有一个2D数组,其中包含产品id、产品名称和公司id,现在我想让一组公司拥有产品信息,并可以向公司发送产品详细信息,数组中的数据如下如何在PHP中根据索引值将2D数组拆分为数组块,php,arrays,Php,Arrays,我有一个2D数组,其中包含产品id、产品名称和公司id,现在我想让一组公司拥有产品信息,并可以向公司发送产品详细信息,数组中的数据如下 Array ( [0] => Array ( [id] => 5363 [proname] => pro1 [company_id] => 101 ) [1] => Array ( [id] => 5364 [pronam
Array
(
[0] => Array
(
[id] => 5363
[proname] => pro1
[company_id] => 101
)
[1] => Array
(
[id] => 5364
[proname] => pro2
[company_id] => 105
)
[2] => Array
(
[id] => 5366
[proname] => pro3
[company_id] => 102
)
[3] => Array
(
[id] => 5367
[proname] => pro4
[company_id] => 101
)
[4] => Array
(
[id] => 5368
[proname] => pro5
[company_id] => 105
)
[5] => Array
(
[id] => 5369
[proname] => pro6
[company_id] => 105
)
[6] => Array
(
[id] => 3847
[proname] => pro7
[company_id] => 102
)
[7] => Array
(
[id] => 3849
[proname] => pro8
[company_id] => 105
)
[8] => Array
(
[id] => 5371
[proname] => pro9
[company_id] => 101
)
[9] => Array
(
[id] => 5383
[proname] => pro10
[company_id] => 102
)
[10] => Array
(
[id] => 5385
[proname] => pro11
[company_id] => 105
)
)
我想在公司id的基础上制作数组块,因此最终的数组应该是三维数组,输出应该是这样的
array(
[0]=>Array(
[0] => Array
(
[id] => 5363
[proname] => pro1
[company_id] => 101
)
[1] => Array
(
[id] => 5367
[proname] => pro4
[company_id] => 101
)
[2] => Array
(
[id] => 5371
[proname] => pro9
[company_id] => 101
)
)
[1]=Array
(
[0] => Array
(
[id] => 5364
[proname] => pro2
[company_id] => 105
)
[1] => Array
(
[id] => 5368
[proname] => pro5
[company_id] => 105
)
[2] => Array
(
[id] => 5369
[proname] => pro6
[company_id] => 105
)
[3] => Array
(
[id] => 3849
[proname] => pro8
[company_id] => 105
)
[4] => Array
(
[id] => 5385
[proname] => pro11
[company_id] => 105
)
)
[2]=Array(
[0] => Array
(
[id] => 5366
[proname] => pro3
[company_id] => 102
)
[1] => Array
(
[id] => 3847
[proname] => pro7
[company_id] => 102
)
[2] => Array
(
[id] => 5383
[proname] => pro10
[company_id] => 102
)
)
)
目标是使组成为公司。在数组中循环 在这里,您可以得到由第三级(我们预期的数组)组成的二维数组 检查键是否为
company\u id
,并附加到我们在循环之前创建的新数组中
$newArr = array();
foreach ($arr as $array) {
foreach ($array as $k=>$v) {
if ($k == 'company_id') {
$newArr[$k][] = $array;
}
}
}
print_r($newArr); // Your new array()
试试这个:
最简单的方法:
$newarray = array();
foreach($array as $values) {
$newarray[$values['company_id']][] = $values;
}
$newarray = array_values($newarray);
另一种方式:
<?php
$newarray = array();
foreach($array as $key=>$val){// here $array is your given array.
if(isset($newarray[$val['company_id']])){
array_push($newarray[$val['company_id']],$val);
}else{
$newarray[$val['company_id']][0]=$val;
}
}
$newarray = array_values($newarray);
echo "<pre>";
print_r($newarray);
echo "</pre>";
?>
创建一个新容器,该容器将保存新值。使用公司id作为键来推送它这是一个很长的方法,有没有php函数的组合可以做到这一点?长方法是什么意思?你只需要一个循环和一行代码,就可以使用至少3行的键来分配任务。虽然你的代码可以解决op的问题,但你也应该解释你做了什么,为什么这是一个解决方案,op的方法/代码有什么问题。只有代码的答案可能会被删除(以及只有链接的答案)。由于其长度和内容,此答案被标记为低质量。请添加此代码如何解决问题的简单英语解释。
$groupBycompany = [];
if ($companies) {
foreach ($companies as $keys => $values) {
if (isset($values['company_id'])){
$groupByCompany[$values['company_id']][] = $values;
}
}
}