WTF 系列 – PHP 的 Array Concatenate

這篇文章放在草稿好久了,今天抽空把他寫完。

PHP 的 Array Concatenate 有兩個方法一個是用 array_merge 另一個是用運算子 + (array union operator)

array_merge 可以把兩個 array 合併起來,但是行為需要注意,

array_merge($a, $b)

當 array 被當作 map 使用時,他的 key 是字串或是數字處理起來結果不同。

當 key 是字串:會把 $a 附加在 $b 的最尾端。如果 $a 和 $b 有相同的 key 的話,後者會覆蓋掉前者的值

當 key 是整數:不會覆蓋,而是 array 當成 list 處理 而不是 map 處理。

結論:如果你預期 PHP 的 Array 是個 MAP ,那應該用字串當 Key ,不要用數字或是其他東西當 Key ,避免非預期的行為發生。

另外,還有 + 這個 array union operator 。 如果你不想重複 key 對應的 value 被複寫 (當 array 是 map),或是 array 被 re-index (當 array 是 list) ,就要用 + 。

結論:因為 PHP 的 Array 可以是 list 也可以 map ,所以在 Array 操作上要特別小心。

Posted in Programming

Leave a Reply

Your email address will not be published.