
合併多個關聯數組並添加具有預設值的缺失列
將關聯數組與不同的鍵集組合以創建統一的數組可能具有挑戰性。這個問題探索了一種實現此目的的方法,所需的輸出是一個數組,其中鍵被合併,缺失的列用預設值填充。
為了實現這一點,建議結合使用array_merge 函數使用精心設計的鍵數組:
1 2 3 4 | $keys = array ();
foreach ( new RecursiveIteratorIterator( new RecursiveArrayIterator( $d )) as $key => $val ) {
$keys [ $key ] = '' ;
}
|
登入後複製
此循環迭代輸入數組中的所有元素,提取唯一鍵並為其分配空值。產生的 $keys 陣列包含最終合併陣列中可能存在的所有鍵。
接下來,每個輸入數組與$keys 數組合併:
1 2 3 4 | $data = array ();
foreach ( $d as $values ) {
$data [] = array_merge ( $keys , $values );
}
|
登入後複製
此步驟確保最終數組中的每一行都具有所有可能的鍵,任何缺失的值都用空字串填充。產生的 $data 陣列是所需的合併和完成的陣列。
或者,可以建立一個金鑰對數組並將其與每個輸入數組合並:
1 2 3 4 5 | $keys = array_keys (call_user_func_array( 'array_merge' , $d ));
$key_pair = array_combine ( $keys , array_fill (0, count ( $keys ), null));
$values = array_map ( function ( $e ) use ( $key_pair ) {
return array_merge ( $key_pair , $e );
}, $d );
|
登入後複製
此方法本質上建立一個將所有可能的鍵對應到空值。然後將每個輸入數組與 $key_pair 數字組合並,實現與先前方法相同的結果。
以上是如何合併關聯數組、處理缺失鍵、填滿預設值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!