国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP 的 array_merge 詳解

darcrand / 2566人閱讀

摘要:如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個(gè)值。語(yǔ)法很簡(jiǎn)單,返回值是合并后的數(shù)組并不總是你所期望的返回值。如下會(huì)產(chǎn)生一條,并且的返回值會(huì)是。要注意的是參數(shù)為怎么處理。

導(dǎo)語(yǔ)

array_merge 這個(gè)函數(shù)很實(shí)用,也很常用,但是它有一些特性,不注意的話就會(huì)造成麻煩。前幾天修改同事代碼的時(shí)候,就出現(xiàn)了這種問(wèn)題,所以查些資料寫(xiě)下來(lái)。

定義與語(yǔ)法
array array_merge ( array $array1 [, array $... ] ) 
合并一個(gè)或多個(gè)數(shù)組。
如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個(gè)值。然而,如果數(shù)組包含數(shù)字鍵名,后面的值將不會(huì)覆蓋原來(lái)的值,而是附加到后面。

語(yǔ)法很簡(jiǎn)單,返回值是合并后的數(shù)組(并不總是你所期望的返回值)。

實(shí)例
 "apple", 1 => "banana");
$arr2 = array(1 => "pear", 2 => "orange");
$arr3 = array("pitaya" => "火龍果");
print_r(array_merge($arr1, $arr2));//  array_merge會(huì)重建索引 Array ( [0] => apple [1] => banana [2] => pear [3] => orange )
echo "
"; print_r(array_merge($arr1, $arr2, $arr3));// 索引數(shù)組和關(guān)聯(lián)數(shù)組合并 Array ( [0] => apple [1] => banana [2] => pear [3] => orange [pitaya] => 火龍果 ) echo "
"; // 索引數(shù)組不會(huì)覆蓋,但是使用 + 的話,前面的值會(huì)覆蓋后面相同索引的值 print_r($arr1 + $arr2);// Array ( [0] => apple [1] => banana [2] => orange ) echo "
"; // 關(guān)聯(lián)數(shù)組 $arr1 = array("apple" => "蘋(píng)果", "banana" => "香蕉"); $arr2 = array("apple" => "黃元帥蘋(píng)果", "orange" => "橙子"); print_r(array_merge($arr1, $arr2));// Array ( [apple] => 黃元帥蘋(píng)果 [banana] => 香蕉 [orange] => 橙子 ) echo "
"; // 后面的值會(huì)覆蓋前面相同key的值,而使用 + 則正好相反,前面的值會(huì)覆蓋后面的值 print_r($arr1 + $arr2);// Array ( [apple] => 蘋(píng)果 [banana] => 香蕉 [orange] => 橙子 )
填坑

那么 array_merge 所謂的坑是什么呢?
實(shí)際使用中,使用框架從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),返回的是二維數(shù)組或者一維數(shù)組。但是如果查詢不到數(shù)據(jù),返回的是 null ,這個(gè)時(shí)候使用 array_merge 的話,就會(huì)產(chǎn)生錯(cuò)誤了。如下


會(huì)產(chǎn)生一條 Warning,并且 array_merge 的返回值會(huì)是 null
處理方法不難,只要將參數(shù)轉(zhuǎn)換為數(shù)組即可,可以封裝函數(shù)進(jìn)行處理。要注意的是參數(shù)為 false 怎么處理。如下

 $value) {
        $newArray = array_merge($newArray, $value);
    }

    return $newArray;
}

$arr1 = array("test" => array("apple", "pear"), "test1" => array("apple", "pear"));
$arr2 = false;
$arr3 = null;

print_r((array)$arr2);// Array ( [0] => )
echo "
"; print_r((array)$arr3);// Array ( ) echo "
"; print_r(array_merge_perfect($arr1, $arr2));// Array ( [test] => Array ( [0] => apple [1] => pear ) [test1] => Array ( [0] => apple [1] => pear ) ) echo "
"; print_r(array_merge_perfect($arr1, $arr3));// Array ( [test] => Array ( [0] => apple [1] => pear ) [test1] => Array ( [0] => apple [1] => pear ) ) echo "
"; print_r(array_merge_perfect($arr2, $arr3));// Array ( ) echo "
";

參考資料:array_merge、數(shù)組轉(zhuǎn)換、可變參數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29970.html

相關(guān)文章

  • PHParray_merge函數(shù)與array+array區(qū)別

    在PHP中可以使用array_merge函數(shù)和兩個(gè)數(shù)組相加array+array的方式進(jìn)行數(shù)組合并,但兩者效果并不相同,下面為大家介紹兩者具體的使用區(qū)別. 區(qū)別如下: 1. 當(dāng)下標(biāo)為數(shù)值時(shí),array_merge()不會(huì)覆蓋掉原來(lái)的值,但array+array合并數(shù)組則會(huì)把最先出現(xiàn)的值作為最終結(jié)果返回,而把后面的數(shù)組擁有相同鍵名的那些值拋棄掉(不是覆蓋). 2. 當(dāng)下標(biāo)為字符時(shí),array+ar...

    amuqiao 評(píng)論0 收藏0
  • 10個(gè)值得深思PHP面試問(wèn)題

    摘要:運(yùn)算符的優(yōu)先級(jí),是明顯高于,因此先執(zhí)行再執(zhí)行。這里會(huì)非常有趣的將轉(zhuǎn)換成一個(gè)數(shù)字而且默認(rèn)去掉了前面的也就是很顯然上面的問(wèn)題已經(jīng)說(shuō)過(guò)了數(shù)字和字符串類型不一致。 showImg(https://segmentfault.com/img/bVvhhO); 本文翻譯自:https://www.toptal.com/php/interview-questions ,文章所羅列的問(wèn)題雖然看似簡(jiǎn)單,但...

    BetaRabbit 評(píng)論0 收藏0
  • 有關(guān)array_keys,array_merge一次報(bào)錯(cuò)

    摘要:類型不同導(dǎo)致的問(wèn)題結(jié)果如下我們發(fā)現(xiàn)當(dāng)為數(shù)字的時(shí)候,是不會(huì)進(jìn)行去重的導(dǎo)致的類型轉(zhuǎn)換結(jié)果我們發(fā)現(xiàn)通過(guò)之后都變成了類型 array_merge 類型不同導(dǎo)致的問(wèn)題 $a = [1=>php,2=>mysql,3=>redis]; $c = [1=>zabbix,2=>mysql]; $d = array_merge($a,$c); var_dump($d); 結(jié)果如下 array(5) {...

    huashiou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<