在PHP程式設計中,我們常常會用到數組,而針對數組的操作也是繁多的。其中一項比較有趣的操作就是二維數組的鍵名轉置。
所謂二維數組,就是指一個數組中的每一個元素都是一個數組。而鍵名轉置指的是將二維數組中每個元素的鍵名變為其數組下標,同時將二維數組中每個元素所對應的數組也轉置。
本文將闡述如何使用PHP實作針對二維陣列的鍵名轉置運算。
一、建立一個二維陣列
在開始講解之前,需要先建立一個二維陣列。我們可以使用以下程式碼:
$originArr = array( 'fruit1' => array('name' => 'apple', 'color' => 'red'), 'fruit2' => array('name' => 'banana', 'color' => 'yellow'), 'fruit3' => array('name' => 'orange', 'color' => 'orange') );
這個二維數組中,每個元素都是一個關聯數組,其中包含了水果的名稱和顏色。現在,我們就要對其進行鍵名轉置操作。
二、使用array_column函數對二維數組進行轉置
PHP中提供了一個叫做array_column的函數,可以用來將多維數組中的某一列提取出來。在本文中,我們即將利用該函數來實現鍵名轉置。
首先,我們要將二維數組中的所有鍵名提取出來,並將其轉換成一個一維數組。使用array_keys函數可以提取所有的鍵名,用array_values函數可以提取所有的值。我們這裡只需要將array_keys函數傳回的陣列作為第二個參數傳給array_column函數即可。
程式碼實作如下:
$keys = array_keys($originArr); $newArr = array_column($originArr, null, $keys);
這一步,我們就將二維數組中每個元素的鍵名作為了新數組的下標。而原數組中每個元素所對應的數組,則成為了新數組的值。
三、將子數組中的鍵名轉置
現在的新數組中,雖然已經對鍵名進行了轉置,但是新數組中每個值也是數組,而每個數組中的鍵名卻不是我們所需要的下標。所以,我們還需要對新數組中的每個子數組進行鍵名轉置。
我們可以使用array_map函數,對newArr數組中的每個子數組套用一個回呼函數,以對其中的鍵名進行轉置。程式碼實作如下:
$newArr = array_map(function($arr){ return array_combine(array_keys($arr), $arr); }, $newArr);
在這裡,我們首先使用array_keys函數將數組目前的鍵名提取出來,然後再將提取出來的鍵名和當前的值,透過array_combine函數組成一個新的關聯數組。這樣,我們就成功地將新數組中每個子數組的鍵名轉置了。
四、完整程式碼實作
透過以上步驟的操作,針對給定的二維數組,我們就可以實現其中的鍵名轉置操作。以下是完整的程式碼實作:
$originArr = array( 'fruit1' => array('name' => 'apple', 'color' => 'red'), 'fruit2' => array('name' => 'banana', 'color' => 'yellow'), 'fruit3' => array('name' => 'orange', 'color' => 'orange') ); $keys = array_keys($originArr); $newArr = array_column($originArr, null, $keys); $newArr = array_map(function($arr){ return array_combine(array_keys($arr), $arr); }, $newArr); print_r($newArr);
輸出結果如下:
Array ( [name] => Array ( [fruit1] => apple [fruit2] => banana [fruit3] => orange ) [color] => Array ( [fruit1] => red [fruit2] => yellow [fruit3] => orange ) )
可以看到,我們已經成功地將二維數組中每個元素的鍵名轉置為了新數組中的下標,同時子數組中每個鍵名也被轉置成了新的下標。
總結
本文中,我們講述了PHP中針對二維陣列的鍵名轉置操作,並介紹如何使用array_column和array_map函數實作該操作。在我們需要對多維數組進行操作的時候,這一種操作可以節省程式碼量,提高開發效率。
以上是php鍵名二維數組怎麼轉置的詳細內容。更多資訊請關注PHP中文網其他相關文章!