亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
使用遞歸函數(shù)手動(dòng)扁平化
利用PHP 內(nèi)置類RecursiveIteratorIterator
注意點(diǎn):關(guān)聯(lián)數(shù)組和平坦後的鍵名問題
首頁 後端開發(fā) php教程 如何使多維的PHP陣列更平坦?

如何使多維的PHP陣列更平坦?

Jul 02, 2025 pm 03:47 PM
php數(shù)組 數(shù)組扁平化

如何將多維數(shù)組扁平化? 1. 使用遞歸函數(shù)手動(dòng)遍歷數(shù)組,若元素仍為數(shù)組則繼續(xù)深入,直至收集所有值;2. 利用PHP 內(nèi)置的RecursiveIteratorIterator與RecursiveArrayIterator實(shí)現(xiàn)自動(dòng)展開;注意:兩種方法均默認(rèn)丟棄原始鍵名,如需保留應(yīng)修改邏輯,並處理重複鍵的覆蓋問題。

How to flatten a multi dimensional php array?

有時(shí)候在處理PHP 數(shù)組的時(shí)候,我們會(huì)遇到一個(gè)多維數(shù)組,想把它“拍平”成一個(gè)一維數(shù)組。比如你從數(shù)據(jù)庫取了一堆數(shù)據(jù),結(jié)構(gòu)嵌套得比較深,但你只想拿到裡面所有的值,這時(shí)候就需要扁平化處理。

How to flatten a multi dimensional php array?

實(shí)現(xiàn)這個(gè)其實(shí)不難,關(guān)鍵在於遞歸遍歷數(shù)組中的每個(gè)元素,把它們一層層“倒出來”。

How to flatten a multi dimensional php array?

使用遞歸函數(shù)手動(dòng)扁平化

這是最常見也最靈活的方法。你可以寫一個(gè)遞歸函數(shù),遍歷數(shù)組的每一個(gè)元素,如果某個(gè)元素還是數(shù)組,就繼續(xù)深入處理,直到找到“葉子節(jié)點(diǎn)”,然後收集起來。

 function flattenArray($array) {
    $result = [];

    foreach ($array as $value) {
        if (is_array($value)) {
            $result = array_merge($result, flattenArray($value));
        } else {
            $result[] = $value;
        }
    }

    return $result;
}

舉個(gè)例子:

How to flatten a multi dimensional php array?
 $input = [1, [2, [3, 4], 5]];
$output = flattenArray($input);
// 結(jié)果是:[1, 2, 3, 4, 5]

這種方式的好處是你能完全控制邏輯,比如你想過濾掉某些類型的數(shù)據(jù)或者做額外處理,都可以在裡面加判斷。


利用PHP 內(nèi)置類RecursiveIteratorIterator

如果你不想自己寫遞歸邏輯,PHP 提供了一個(gè)內(nèi)置的方式:使用RecursiveIteratorIteratorRecursiveArrayIterator來自動(dòng)展開多維數(shù)組。

 function flattenArrayUsingIterator($array) {
    $iterator = new \RecursiveIteratorIterator(
        new \RecursiveArrayIterator($array)
    );

    $result = [];
    foreach ($iterator as $value) {
        $result[] = $value;
    }

    return $result;
}

效果和上面一樣,只是用了更面向?qū)ο蟮姆绞綄?shí)現(xiàn)。這種寫法在代碼風(fēng)格要求高的項(xiàng)目中可能更受歡迎,而且不容易出錯(cuò)。


注意點(diǎn):關(guān)聯(lián)數(shù)組和平坦後的鍵名問題

上面兩種方法都會(huì)丟棄原始的鍵名,返回的是數(shù)字索引的一維數(shù)組。如果你希望保留原來的鍵,那就要稍微改一下邏輯了。

比如,在遞歸版本里可以改成這樣:

 function flattenArrayWithKeys($array, &$result = []) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            flattenArrayWithKeys($value, $result);
        } else {
            $result[$key] = $value;
        }
    }

    return $result;
}

不過要注意,如果多個(gè)層級(jí)中有相同的鍵,後面的值會(huì)覆蓋前面的。所以在處理關(guān)聯(lián)數(shù)組時(shí),需要根據(jù)業(yè)務(wù)決定是否要合併、重命名或忽略重複的鍵。


基本上就這些。用遞歸函數(shù)是最直接的辦法,而用迭代器則更安全一些,適合不確定嵌套深度的情況。選擇哪個(gè)方式看你的具體需求。

以上是如何使多維的PHP陣列更平坦?的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
php怎麼判斷陣列有幾個(gè) php怎麼判斷陣列有幾個(gè) Aug 04, 2023 pm 05:40 PM

php判斷陣列有幾個(gè)的方法:1、使用count()函數(shù),適用於所有類型的陣列。但要注意的是,如果傳入的參數(shù)不是數(shù)組,count()函數(shù)會(huì)傳回0;2、使用sizeof()函數(shù),更多用於保持與其他程式語言的相容性;3、自訂函數(shù),透過使用循環(huán)遍歷數(shù)組,每遍歷一次,計(jì)數(shù)器加1,最終得到數(shù)組的長(zhǎng)度。自訂函數(shù)可以根據(jù)實(shí)際需求進(jìn)行修改和擴(kuò)展,更加靈活。

php數(shù)組二維怎麼轉(zhuǎn)一維數(shù)組 php數(shù)組二維怎麼轉(zhuǎn)一維數(shù)組 Aug 03, 2023 am 11:14 AM

php數(shù)組二維轉(zhuǎn)一維數(shù)組的方法:1、使用循環(huán)遍歷,使用循環(huán)遍歷二維數(shù)組,將每個(gè)元素添加到一維數(shù)組中;2、使用“array_merge”函數(shù),可以將多個(gè)數(shù)字組合併為一個(gè)數(shù)組,將二維數(shù)組當(dāng)作參數(shù)傳遞給“array_merge”函數(shù),將其轉(zhuǎn)換為一維數(shù)組;3、使用“array_reduce”函數(shù),可以將數(shù)組中的所有值通過一個(gè)回調(diào)函數(shù)來處理,並最後返回一個(gè)結(jié)果。

PHP數(shù)組的效能最佳化技巧探究 PHP數(shù)組的效能最佳化技巧探究 Mar 13, 2024 pm 03:03 PM

PHP數(shù)組是一種非常常見的資料結(jié)構(gòu),在開發(fā)過程中常會(huì)用到。然而,隨著資料量的增加,數(shù)組的效能可能會(huì)成為一個(gè)問題。本文將探討一些PHP數(shù)組的效能最佳化技巧,並提供具體的程式碼範(fàn)例。 1.使用適當(dāng)?shù)馁Y料結(jié)構(gòu)在PHP中,除了普通數(shù)組外,還有一些其他資料結(jié)構(gòu),如SplFixedArray、SplDoublyLinkedList等,它們?cè)谔囟ㄇ闆r下可能比普通數(shù)組效能更好

php數(shù)組鍵值對(duì)是什麼 php數(shù)組鍵值對(duì)是什麼 Aug 03, 2023 pm 02:20 PM

php數(shù)組鍵值對(duì)是一種資料結(jié)構(gòu),由一個(gè)鍵和一個(gè)對(duì)應(yīng)的值組成,鍵是數(shù)組元素的標(biāo)識(shí)符,而值是與鍵相關(guān)聯(lián)的資料。允許我們以鍵為標(biāo)識(shí)來儲(chǔ)存和存取數(shù)據(jù),透過使用鍵值對(duì),可以更方便地操作和管理數(shù)組中的元素,使得程式開發(fā)更加靈活和高效。

php數(shù)組求平均值的函數(shù)有哪些 php數(shù)組求平均值的函數(shù)有哪些 Jul 17, 2023 pm 04:03 PM

php數(shù)組求平均值的函數(shù)有:1、array_sum(),用於計(jì)算數(shù)組中所有值的總和,為了計(jì)算平均值,可以將數(shù)組中的所有值相加,然後除以數(shù)組元素的數(shù)量;2 、array_reduce(),用於迭代數(shù)組並將每個(gè)值與一個(gè)初始值進(jìn)行計(jì)算;3、array_mean(),用於返回?cái)?shù)組的平均值,先計(jì)算數(shù)組的總和,併計(jì)算數(shù)組元素的個(gè)數(shù),將總和除以數(shù)組元素的個(gè)數(shù),即得到平均值。

PHP數(shù)組的最大長(zhǎng)度是多少 PHP數(shù)組的最大長(zhǎng)度是多少 Aug 10, 2023 pm 02:53 PM

PHP中數(shù)組並沒有固定的最大長(zhǎng)度限制,數(shù)組的最大長(zhǎng)度實(shí)際上是受到可用內(nèi)存的限制,根據(jù)伺服器的可用內(nèi)存來決定,如果數(shù)組需要存儲(chǔ)非常大量的元素,可能會(huì)超出服務(wù)器可用內(nèi)存的限制並導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。

PHP數(shù)組合併的array_merge()函數(shù)如何運(yùn)作? PHP數(shù)組合併的array_merge()函數(shù)如何運(yùn)作? Apr 28, 2024 pm 05:03 PM

PHP的array_merge()函數(shù)將兩個(gè)或更多數(shù)字組合併為一個(gè)新陣列。建立一個(gè)新數(shù)組。遍歷要合併的陣列。將每個(gè)元素新增到新數(shù)組中,如果鍵相同,則覆蓋現(xiàn)有元素。傳回包含所有合併元素的新數(shù)組。

PHP數(shù)組打亂順序是否會(huì)影響數(shù)組的引用或位址? PHP數(shù)組打亂順序是否會(huì)影響數(shù)組的引用或位址? Apr 30, 2024 pm 03:48 PM

否,打亂PHP數(shù)組順序不會(huì)影響元素引用或位址,因?yàn)樵睾退鼈兊逆I保持不變。打亂順序後,陣列的內(nèi)容(元素和鍵)保持不變,只有鍵的順序改變。

See all articles