用代碼講技術(shù):PHP合并數(shù)組

  1. 使用數(shù)組+運算符

合并數(shù)組的最簡單方法是使用+運算符鳖目。

// 在兩個索引數(shù)組上使用+運算符
$frontend = ['Vue', 'React'];
$backend = ['PHP', 'Java', 'Python'];
$classes = $frontend + $backend;
echo '<pre>';
// 結(jié)果數(shù)組只包含三個元素矮燎,而不是五個元素。
// 這是因為+運算符沒有將第二個數(shù)組連接到第一個數(shù)組的末尾
// 對于索引數(shù)組俄认,+運算符會忽略第二個數(shù)組中與第一個數(shù)組具有相同索引的元素
print_r($classes);
echo '</pre>';
// 通過+運算符合并兩個關聯(lián)數(shù)組
$frontend = ['Vue' => '漸進式 JavaScript 框架', 'React' => '用于構(gòu)建 Web 和原生交互界面的庫'];
$backend = ['PHP' => 'Hypertext Preprocessor', 'Java' => 'Write Once, Run Anywhere', 'Python' => 'Life is short, use Python'];
$languages = $frontend + $backend;
echo '<pre>';
// 兩個數(shù)組都包含一組唯一的鍵佩憾,因此生成的數(shù)組包含每個元素及其關聯(lián)鍵
print_r($languages);
echo '</pre>';
// 當存在重復的鍵時,+運算符會忽略第二個數(shù)組中的元素
$frontend = ['Vue' => '漸進式 JavaScript 框架', 'React' => '用于構(gòu)建 Web 和原生交互界面的庫', 'Node' => '一個跨平臺的 JavaScript 運行時環(huán)境'];
$backend = ['PHP' => 'Hypertext Preprocessor', 'Java' => 'Write Once, Run Anywhere', 'Python' => 'Life is short, use Python', 'Node' => '服務器端的 JavaScript 運行環(huán)境'];
$languages = $frontend + $backend;
echo '<pre>';
// 第二個數(shù)組中的 Node 被忽略亮蒋,因為它的鍵重復
print_r($languages);
echo '</pre>';
  1. 使用 array_merge() 和 array_merge_recursive() 函數(shù)
# 函數(shù) array_merge() 和array_merge recursive()連接兩個或多個數(shù)組以創(chuàng)建新數(shù)組副编。
# 它們之間的區(qū)別在于它們處理關聯(lián)數(shù)組中重復值的方式负甸。
# 處理索引數(shù)組時,array_merge() 函數(shù)會自動對每個元素的索引重新編號痹届,并包含每個值呻待,包括重復項。
$frontend = ['Vue', 'React', 'Node'];
$backend = ['PHP', 'Java', 'Python', 'Node'];
$languages = array_merge($frontend, $backend);
echo '<pre>';
// 索引是連續(xù)編號的短纵,重復值保留在結(jié)果數(shù)組中
print_r($languages);
echo '</pre>';
# 處理關聯(lián)數(shù)組時带污,array_merge() 函數(shù)的行為依賴于是否存在重復的數(shù)組鍵
# 當沒有重復項時,array_merge() 函數(shù)以與+運算符完全相同的方式連接關聯(lián)數(shù)組
$frontend = ['Vue' => '漸進式 JavaScript 框架', 'React' => '用于構(gòu)建 Web 和原生交互界面的庫'];
$backend = ['PHP' => 'Hypertext Preprocessor', 'Java' => 'Write Once, Run Anywhere', 'Python' => 'Life is short, use Python'];
$languages = array_merge($frontend, $backend);
echo '<pre>';
print_r($languages);
echo '</pre>';
# 當存在重復的數(shù)組鍵時香到,array_merge() 函數(shù)會導致只保留最后一個重復的值
$frontend = ['Vue' => '漸進式 JavaScript 框架', 'React' => '用于構(gòu)建 Web 和原生交互界面的庫', 'Node' => '一個跨平臺的 JavaScript 運行時環(huán)境'];
$backend = ['PHP' => 'Hypertext Preprocessor', 'Java' => 'Write Once, Run Anywhere', 'Python' => 'Life is short, use Python', 'Node' => '服務器端的 JavaScript 運行環(huán)境'];
$languages = array_merge($frontend, $backend);
echo '<pre>';
print_r($languages);
echo '</pre>';

數(shù)組的合并順序不同于+運算符鱼冀。+運算符保留第一個重復值,而 array_merge() 函數(shù)保留最后一個重復值悠就。

# 要保留重復鍵的值千绪,需要使用 array_merge_recursive() 函數(shù)
$frontend = ['Vue' => '漸進式 JavaScript 框架', 'React' => '用于構(gòu)建 Web 和原生交互界面的庫', 'Node' => '一個跨平臺的 JavaScript 運行時環(huán)境'];
$backend = ['PHP' => 'Hypertext Preprocessor', 'Java' => 'Write Once, Run Anywhere', 'Python' => 'Life is short, use Python', 'Node' => '服務器端的 JavaScript 運行環(huán)境'];
$languages = array_merge_recursive($frontend, $backend);
echo '<pre>';
// 重復鍵的值將合并到索引子數(shù)組中
print_r($languages);
echo '</pre>';

+運算符、array_merge() 函數(shù)和 array_merge_recursive() 函數(shù)可處理兩個以上的數(shù)組梗脾。關于重復鍵和值的規(guī)則是相同的荸型。對于 array_merge() 函數(shù),它始終是保留最后一個重復的值炸茧。

  1. 將兩個索引數(shù)組合并為關聯(lián)數(shù)組
# array_combine() 函數(shù)將兩個索引數(shù)組合并為一個關聯(lián)數(shù)組瑞妇,第一個數(shù)組用作鍵,第二個數(shù)組用作值。
# 兩個數(shù)組的元素數(shù)量必須相同梭冠。否則辕狰,函數(shù)返回 false 并觸發(fā)警告。
$colors = ['red', 'yellow', 'green'];
$actions = ['stop', 'wait', 'go'];
$signal = array_combine($colors, $actions);
echo '<pre>';
print_r($signal );
echo '</pre>';
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末控漠,一起剝皮案震驚了整個濱河市蔓倍,隨后出現(xiàn)的幾起案子悬钳,更是在濱河造成了極大的恐慌,老刑警劉巖偶翅,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件默勾,死亡現(xiàn)場離奇詭異,居然都是意外死亡聚谁,警方通過查閱死者的電腦和手機母剥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垦巴,“玉大人媳搪,你說我怎么就攤上這事≈栊” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵序愚,是天一觀的道長憔披。 經(jīng)常有香客問我,道長爸吮,這世上最難降的妖魔是什么芬膝? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮形娇,結(jié)果婚禮上锰霜,老公的妹妹穿的比我還像新娘。我一直安慰自己桐早,他們只是感情好癣缅,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哄酝,像睡著了一般友存。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陶衅,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天屡立,我揣著相機與錄音,去河邊找鬼搀军。 笑死膨俐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的罩句。 我是一名探鬼主播焚刺,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼的止!你這毒婦竟也來了檩坚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匾委,沒想到半個月后拖叙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡赂乐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年薯鳍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挨措。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡挖滤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浅役,到底是詐尸還是另有隱情斩松,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布觉既,位于F島的核電站惧盹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞪讼。R本人自食惡果不足惜钧椰,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望符欠。 院中可真熱鬧嫡霞,春花似錦、人聲如沸希柿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狡汉。三九已至娄徊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盾戴,已是汗流浹背寄锐。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尖啡,地道東北人橄仆。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像衅斩,于是被迫代替她去往敵國和親盆顾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容