php二維數(shù)組重組:按鍵值下標(biāo)重新排列數(shù)據(jù)
本文介紹如何利用PHP高效地重組一個(gè)長(zhǎng)度不一的二維數(shù)組,使其按照鍵值下標(biāo)重新排列。假設(shè)我們有一個(gè)二維數(shù)組,其子數(shù)組長(zhǎng)度不一致,我們需要根據(jù)鍵的下標(biāo)將相同下標(biāo)的元素提取出來(lái),組成新的子數(shù)組。
問(wèn)題:給定一個(gè)長(zhǎng)度不一的二維數(shù)組,如何將其重組為一個(gè)新的數(shù)組,使得新數(shù)組的每個(gè)子數(shù)組包含原數(shù)組中相同鍵下標(biāo)的元素?
解決方案:使用PHP的array_map函數(shù)。array_map函數(shù)可以對(duì)數(shù)組的每個(gè)元素應(yīng)用一個(gè)回調(diào)函數(shù),并返回一個(gè)包含結(jié)果的新數(shù)組。通過(guò)將原數(shù)組用…展開(kāi)作為array_map的參數(shù),我們可以輕松實(shí)現(xiàn)按鍵下標(biāo)分組。
以下代碼演示了如何使用array_map函數(shù)實(shí)現(xiàn)目標(biāo):
<?php $arr = [ ['測(cè)試-2票', '顏夕-2票'], ['小白-2票', '小黑-2票'], ['張張-2票', '小黃-2票', '小綠-2票'], ]; // 使用array_map和匿名函數(shù) $result = array_map(function (...$list) { return $list; }, ...$arr); var_dump($result); // PHP 7.4及以上版本,可以使用更簡(jiǎn)潔的箭頭函數(shù) $result = array_map(fn(...$i) => $i, ...$arr); var_dump($result); ?>
代碼解釋:這段代碼將原數(shù)組$arr展開(kāi),作為array_map函數(shù)的多個(gè)參數(shù)。匿名函數(shù)function (…$list)接收這些參數(shù),每個(gè)參數(shù)代表原數(shù)組中一個(gè)子數(shù)組的一個(gè)元素,并將這些元素組合成一個(gè)新的數(shù)組。最終$result將包含按照鍵下標(biāo)重新組合后的數(shù)據(jù)。 箭頭函數(shù)版本提供了更簡(jiǎn)潔的語(yǔ)法,實(shí)現(xiàn)相同的功能。 需要注意的是,原始數(shù)據(jù)中“小綠”的票數(shù)可能存在錯(cuò)誤,代碼按照原數(shù)據(jù)結(jié)構(gòu)進(jìn)行處理。