3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
只需創(chuàng)建一個(gè)由索引 6 開始的組索引的數(shù)組。這將為由組號(hào)索引的每個(gè)組創(chuàng)建一個(gè)子數(shù)組:
foreach($array as $v) {
$groups[$v[6]][] = $v;
}
然后要獲取一組中單獨(dú)的項(xiàng)目,檢查是否恰好有一個(gè)子數(shù)組并將其添加到另一個(gè)數(shù)組中。然后將其從組數(shù)組中刪除:
foreach($groups as $k => $v) {
if(count($v) == 1) {
$other[] = $v; // or $other[$v[0][6]][] = $v;
unset($groups[$k]);
}
}

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
$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:首先按子數(shù)組的第 6 個(gè)項(xiàng)目將所有項(xiàng)目分組...同時(shí)保持計(jì)數(shù) 2. 將單個(gè)和多個(gè)項(xiàng)目組分隔在 2 個(gè)數(shù)組中... 3. 對(duì)多個(gè)項(xiàng)目做任何你需要的事情團(tuán)體。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
此函數(shù)將按所需索引對(duì)它們進(jìn)行分組,然后將沒有任何其他具有相同索引的那些組合起來,并返回一個(gè)數(shù)組數(shù)組,未分組,然后全部分組。
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 關(guān)注
- 156 瀏覽
添加回答
舉報(bào)