3 回答
TA贡献1818条经验 获得超11个赞
只需创建一个由索引 6 开始的组索引的数组。这将为由组号索引的每个组创建一个子数组:
foreach($array as $v) {
$groups[$v[6]][] = $v;
}
然后要获取一组中单独的项目,检查是否恰好有一个子数组并将其添加到另一个数组中。然后将其从组数组中删除:
foreach($groups as $k => $v) {
if(count($v) == 1) {
$other[] = $v; // or $other[$v[0][6]][] = $v;
unset($groups[$k]);
}
}
TA贡献1946条经验 获得超4个赞
$mainArray = ... all rows variable here..
$groupedArray = [];
$countArray = [];
foreach ($mainArray as $k => $v) {
$groupedArray[$v[6]][] = $v;
$countArray[$v[6]]++;
}
$singleItems = [];
$multipleItems = [];
foreach ($groupedArray as $k => $v) {
if ($countArray[$k] > 1) $multipleItems[] = $v;
else $singleItems = $v;
}
... do something with single and multi - groups...
1:首先按子数组的第 6 个项目将所有项目分组...同时保持计数 2. 将单个和多个项目组分隔在 2 个数组中... 3. 对多个项目做任何你需要的事情团体。
TA贡献1936条经验 获得超6个赞
此函数将按所需索引对它们进行分组,然后将没有任何其他具有相同索引的那些组合起来,并返回一个数组数组,未分组,然后全部分组。
function sortByIndex( $data, $index ) {
$sortedData = array();
$ungroupedData = array();
// Make sure you can loop through
if ( ! is_array( $data ) ) {
return FALSE;
}
foreach ( $data as $key => $arrayToInspect ) {
if ( ! isset( $sortedData[$arrayToInspect[$index]] ) ) {
$sortedData[$arrayToInspect[$index]] = array();
}
$sortedData[$arrayToInspect[$index]][] = $arrayToInspect;
}
// Combine as desired
foreach ( $sortedData as $groupId => $data ) {
if ( count( $data ) < 2 ) {
$ungroupedData[] = $data;
unset( $sortedData[$groupId] );
}
}
return ( array_merge( [ $ungroupedData ], array_values( $sortedData ) ) );
}
- 3 回答
- 0 关注
- 131 浏览
添加回答
举报