成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

PHP學(xué)習(xí)記錄(數(shù)組函數(shù))

frontoldman / 2140人閱讀

摘要:數(shù)組中的數(shù)組是一個(gè)有序映射,映射是一種把關(guān)聯(lián)到的類(lèi)型,數(shù)組可以接受任意數(shù)量用逗號(hào)分隔符的鍵值對(duì)。

數(shù)組

php中的數(shù)組是一個(gè)有序映射,映射是一種把values關(guān)聯(lián)到keys的類(lèi)型,數(shù)組可以接受任意數(shù)量用逗號(hào)分隔符的鍵值對(duì)。

數(shù)組的介紹

/*
 * php中數(shù)組可以分為:
 * 索引數(shù)組:下標(biāo)是數(shù)字
 * 關(guān)聯(lián)數(shù)組:下標(biāo)是字符串
 * 注:php中數(shù)組其實(shí)不區(qū)分索引還是關(guān)聯(lián)數(shù)組,都是根據(jù)鍵名找到對(duì)應(yīng)的值
 *
 * php可以同時(shí)包含integer和string類(lèi)型的鍵名
 * key:可以是一個(gè)整數(shù)integer或者字符串string
 * value:可以是任意類(lèi)型的值
 *
 * php中的key只能是integer或這string類(lèi)型,如果使用其他類(lèi)型會(huì)自動(dòng)轉(zhuǎn)換:
 * 1. 包含有合法整型值的字符串會(huì)被自動(dòng)轉(zhuǎn)換成整型(如"8"會(huì)被轉(zhuǎn)換為8,但是"08"不會(huì)被轉(zhuǎn)換)
 * 2. 浮點(diǎn)數(shù)會(huì)被轉(zhuǎn)換成整型,小數(shù)部分會(huì)被舍去
 * 3. 布爾值會(huì)被轉(zhuǎn)換成整型(true轉(zhuǎn)成1,false轉(zhuǎn)成0)
 * 4. NULL會(huì)被轉(zhuǎn)換成空字符串,即""
 * 5. 數(shù)組和對(duì)象不能被用為鍵名
 *
 * 如果數(shù)組定義中多個(gè)單元都用了同一個(gè)鍵名,則只會(huì)使用最后一個(gè),之前的值都會(huì)被覆蓋
 * 如果沒(méi)有指定鍵名,且鍵名不都為負(fù)數(shù),新添加的元素的鍵名是已有鍵名的最大值+1
 * 如果鍵名都為負(fù)數(shù),那么新添加的元素鍵名從0開(kāi)始
 *
 */

數(shù)組的創(chuàng)建

$arr1 = array();  //創(chuàng)建一個(gè)空數(shù)組
$arr2 = array(1, 2, 3);  //創(chuàng)建一個(gè)索引數(shù)組
$arr3 = array(  //創(chuàng)建一個(gè)關(guān)聯(lián)數(shù)組
    "a" => "a_value",
    "b" => "b_value",
    "c" => "c_value"
);
$arr4 = [];  //[]用法和array()一致,同樣可以創(chuàng)建空數(shù)組、索引數(shù)組、關(guān)聯(lián)數(shù)組
$arr4[] = "a";  //利用[]對(duì)數(shù)組進(jìn)行擴(kuò)展,為數(shù)組新添元素

鍵名類(lèi)型的自動(dòng)轉(zhuǎn)換

$arr = array(
    1 => "a",           //1     鍵名為integer類(lèi)型,不會(huì)自動(dòng)轉(zhuǎn)換
    "b" => "b",         //"b"   鍵名為string類(lèi)型,不會(huì)自動(dòng)轉(zhuǎn)換
    "8" => "c",         //8     包含有合法整型值的字符串會(huì)自動(dòng)轉(zhuǎn)換成整型
    3.5 => "d",         //3     鍵名為浮點(diǎn)數(shù)類(lèi)型,會(huì)舍去小數(shù),轉(zhuǎn)換成integer類(lèi)型
    true => "e",        //1     鍵名為布爾類(lèi)型,true轉(zhuǎn)成1,false轉(zhuǎn)成0
    null => "f",        //""    鍵名為NULL類(lèi)型,會(huì)轉(zhuǎn)成""
    "g"                 //9     沒(méi)有指定鍵名,默認(rèn)為已有最大健名的值+1
);
$arr[] = "h";           //10    新添加一個(gè)健值對(duì),沒(méi)有指定鍵名,默認(rèn)為已有最大健名的值+1
print_r($arr);  //printf_r()是數(shù)組輸出專(zhuān)用函數(shù)

通過(guò)range()和compact()快速創(chuàng)建

//range()快速創(chuàng)建下標(biāo)連續(xù)的索引數(shù)組
//
/*
 * range()函數(shù)
 * array range(mixed $start, mixed $limit[, number $step=1])
 * 描述:建立一個(gè)包含指定范圍單元的,且下標(biāo)連續(xù)的索引數(shù)組
 * start:序列的第一個(gè)值
 * limit:序列結(jié)束于limit的值
 * step:如果給出了step的值,它將被作為單元之間的步進(jìn)值,如果未指定,默認(rèn)為1
 *
 * 補(bǔ)充:
 * string chr(int $value):將數(shù)字作為ASCII轉(zhuǎn)成成字符
 * int ord(string $value):輸出字符的ASCII
 */
$arr = range(1, 5);
print_r($arr);  //Array([0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5)

$arr = range("a", "b", "c");
print_r($arr);  //Array([0] => a [1] => b [2] => c)

echo chr(90), "
";  //Z
echo ord("z"), "
";  //122

//compact()快速創(chuàng)建關(guān)聯(lián)數(shù)組
/*
 * compact()函數(shù)
 * array compact(mixed $varname[, mixed $...])
 * 描述:建立一個(gè)數(shù)組,包括變量名和它們的值
 *
 * 補(bǔ)充:
 * list($var1, $var2...):將數(shù)組中的值賦給一些變量
 */
$username = "zhao";
$age = "22";
$email = "[email protected]";

$arr = compact("username", "age", "email");  //通過(guò)將已有變量名放在函數(shù)中快速生成關(guān)聯(lián)數(shù)組
//Array([username] => zhao [age] => 22 [email] => [email protected])
print_r($arr);

list($a, $b, $c) = array(1, 2, 3);
echo "a的值為{$a}, b的值為{$b}, c的值為{$c}", "
";  //a的值為1, b的值為2, c的值為3

通過(guò)const和define()定義常量數(shù)組

const ARR1 = [1, 2, 3];  //const定義常量數(shù)組
print_r(ARR1);  //Array([0] => 1 [1] => 2 [2] => 3)

define("ARR2", [1, 2, 3]);  //define()定義常量數(shù)組
print_r(ARR2);  //Array([0] => 1 [1] => 2 [2] => 3)

//運(yùn)用場(chǎng)景:自定義文件上傳錯(cuò)誤數(shù)組信息
define("CUSTOM_UPLOAD_ERRORS", [
    "ext_error" => "文件擴(kuò)展名不符合規(guī)范",
    "maxsize" => "上傳文件大小不符合規(guī)范"
]);

//遇到文件上傳時(shí)擴(kuò)展名不符合規(guī)范的時(shí)候,可調(diào)用報(bào)錯(cuò)
echo CUSTOM_UPLOAD_ERRORS["ext_error"], "
";  //文件擴(kuò)展名不符合規(guī)范

數(shù)組的使用

/*
 * => 通過(guò)鍵名找到對(duì)應(yīng)的鍵值
 * 增、刪、改、查
 */

//查找:通過(guò)鍵名找到對(duì)應(yīng)的鍵值
$arr1 = ["a", "b", "c", "d"];
$arr2 = [
    "username" => "王昭",
    "sex" => "男"
];
echo "下標(biāo)為2的值:", $arr1[2], "
";  //下標(biāo)為2的值:c
echo "用戶(hù)名為:",$arr2["username"], "
";  //用戶(hù)名為:王昭

$arr3 = [  //二位數(shù)組的查找
    ["id"=>"1001", "name"=>"張三"],
    ["id"=>"1002", "name"=>"李四"]
];
echo "下標(biāo)為0的姓名:", $arr3[0]["name"], "
";  //下標(biāo)為0的姓名:張三

//添加
$arr = ["a", "b", "c"];
$arr[] = "d";  //添加元素,不指定鍵名,鍵名為數(shù)字
$arr["username"] = "王昭";  //添加元素,指定鍵名,鍵名為字符串
print_r($arr);  //Array([0] => a [1] => b [2] => c [3] => d [username] => 王昭)

//修改
$arr = ["a", "b", "c", "username"=>"王昭"];
$arr["username"] = "張三";
echo $arr["username"], "
";  //張三

//刪除
unset($arr["username"]);  //刪除鍵名為"username"的鍵值對(duì)
print_r($arr);  //Array([0] => a [1] => b [2] => c)

unset($arr[1]);
print_r($arr);  //Array([0] => a [2] => c)


unset($arr);  //釋放數(shù)組
//print_r($arr);  //輸出錯(cuò)誤 Notice: Undefined variable

其他類(lèi)型轉(zhuǎn)換成數(shù)組

/*
 * 如果將一個(gè)值轉(zhuǎn)換為數(shù)組,將得到一個(gè)僅有一個(gè)元素的數(shù)組,其下標(biāo)為0,該元素即為此標(biāo)量的值;
 * 對(duì)象可以轉(zhuǎn)換為數(shù)組,但是注意盡量避免這樣轉(zhuǎn)換,因?yàn)闀?huì)導(dǎo)致一些意想不到的效果。
 * 注意:null轉(zhuǎn)換成數(shù)組是空數(shù)組[]
 *
 * 臨時(shí)轉(zhuǎn)換
 * (array)$var
 *
 * 永久轉(zhuǎn)換
 * settype($var, "array")
 */
$str = "abc";
$arr = (array)$str;
print_r($arr);  //Array([0] => abc)

settype($str, "array");
print_r($str);  //Array([0] => abc)

數(shù)組運(yùn)算符

/*
 * 常用的數(shù)組運(yùn)算符:
 * +:合并數(shù)組,如果鍵名相同,只展示左邊數(shù)組的鍵值對(duì)
 * ==:比較數(shù)組的鍵名和對(duì)應(yīng)的鍵值是否相同,如果相同返回true,否則返回false
 * ===:既要比較鍵名和對(duì)應(yīng)的鍵值及鍵值類(lèi)型是否相同,而且順序也要相同
 * !=:比較數(shù)組的鍵名和對(duì)應(yīng)的鍵值是否不相同
 * !==:比較數(shù)組的鍵名和對(duì)應(yīng)的鍵值和鍵值類(lèi)型是否不相同,或者順序不相同
 * <>:和!=效果一樣
 *
 *
 */
$arr1 = [1, 2, 3];
$arr2 = ["a", "b", "c"];
$arr3 = ["username"=>"張三", "age"=>12];
$arr4 = [10=>10, 11=>11];
$arrSum1 = $arr1 + $arr2;  //如果鍵名相同,只會(huì)展示左邊數(shù)組的鍵值對(duì)
$arrSum2 = $arr1 + $arr3;  //+與數(shù)組是索引數(shù)組或者是關(guān)聯(lián)數(shù)組無(wú)關(guān)
$arrSum3 = $arr1 + $arr3 + $arr4;  //如果后面的數(shù)組的鍵名和前面的數(shù)組的鍵名重復(fù),不會(huì)覆蓋,會(huì)展示前面數(shù)組對(duì)應(yīng)的鍵值
print_r($arrSum1);  //Array([0] => 1 [1] => 2 [2] => 3)
print_r($arrSum2);  //Array([0] => 1 [1] => 2 [2] => 3 [username] => 張三 [age] => 12)
print_r($arrSum3);  //Array([0] => 1 [1] => 2 [2] => 3 [username] => 張三 [age] => 12 [10] => 10 [11] => 11)

$arr5 = ["1"=>1, "b"=>2, "c"=>3];
$arr6 = ["b"=>2, "1"=>1, "c"=>3];
$arr7 = [1=>1, "b"=>2, "c"=>3];
var_dump($arr5 == $arr6);  //bool(true)
var_dump($arr5 === $arr6);  //bool(false)
var_dump($arr5 === $arr7);  //bool(true)

var_dump($arr5 != $arr6);  //bool(false)
var_dump($arr5 !== $arr6);  //bool(true)


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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28733.html

相關(guān)文章

  • PHP學(xué)習(xí)記錄函數(shù)

    摘要:函數(shù)變量局部變量局部動(dòng)態(tài)變量變量只在函數(shù)內(nèi)部執(zhí)行,執(zhí)行完畢則被銷(xiāo)毀局部靜態(tài)變量使用修飾,執(zhí)行完畢不被銷(xiāo)毀注函數(shù)內(nèi)部定義的變量,為局部變量,函數(shù)外部不能訪問(wèn)。局部動(dòng)態(tài)變量局部靜態(tài)變量全局變量在函數(shù)外部定義的變量,稱(chēng)為全局變量。 函數(shù) 函數(shù)含義 函數(shù):是實(shí)現(xiàn)特定功能的、可以重復(fù)執(zhí)行的代碼段; 函數(shù)名:從語(yǔ)法上講,函數(shù)名中能有漢字,但在實(shí)際開(kāi)發(fā)中不建議使用! 函數(shù)結(jié)構(gòu) function ...

    XiNGRZ 評(píng)論0 收藏0
  • PHP學(xué)習(xí)記錄(數(shù)據(jù)類(lèi)型)

    摘要:包含有合法整型值的字符串會(huì)被轉(zhuǎn)換為整型如會(huì)被轉(zhuǎn)換為,但是不能轉(zhuǎn)換為浮點(diǎn)數(shù)會(huì)被轉(zhuǎn)換為整型,意味著小數(shù)部分會(huì)被舍去。說(shuō)明一個(gè)參數(shù)可以接受多種不同的但不一定是所有的類(lèi)型。 PHP數(shù)據(jù)類(lèi)型 PHP支持八種原始的數(shù)據(jù)類(lèi)型: showImg(https://segmentfault.com/img/bVbbDN4?w=634&h=301); 布爾型 /* * boolean:TRUE FALS...

    yeooo 評(píng)論0 收藏0
  • [PHP源碼閱讀]array_push和array_unshift函數(shù)

    摘要:對(duì)于函數(shù),實(shí)現(xiàn)時(shí)新建一個(gè)哈希表,將需要插入的數(shù)據(jù)先插入到中,然后再把原來(lái)的數(shù)組數(shù)據(jù)寫(xiě)入到中,這樣實(shí)現(xiàn)在數(shù)組前面插入數(shù)據(jù)元素的功能。這次閱讀源碼過(guò)程中,同時(shí)也研究了中的哈希表數(shù)據(jù)結(jié)構(gòu)及一些,也給自己補(bǔ)充了一些哈希表的知識(shí)。 在PHP中,在數(shù)組中添加元素也是一種很常用的操作,分別有在數(shù)組尾部和頭部添加元素,看看PHP內(nèi)部是如何實(shí)現(xiàn)數(shù)組插入的操作。 我在github有對(duì)PHP源碼更詳細(xì)的注解...

    HackerShell 評(píng)論0 收藏0
  • [PHP源碼閱讀]trim、rtrim、ltrim函數(shù)

    摘要:系列函數(shù)是用于去除字符串中首尾的空格或其他字符。此處要注意,左右兩邊是一對(duì)合法的范圍值,如果傳遞的是非法的值會(huì)報(bào)錯(cuò)。本文主要對(duì)函數(shù)進(jìn)行分析,和函數(shù)跟的類(lèi)似。更多源碼文章源碼閱讀函數(shù)性能為王從源碼剖析和源碼閱讀和函數(shù)源碼閱讀和函數(shù) trim系列函數(shù)是用于去除字符串中首尾的空格或其他字符。ltrim函數(shù)只去除掉字符串首部的字符,rtrim函數(shù)只去除字符串尾部的字符。 我在github有對(duì)P...

    時(shí)飛 評(píng)論0 收藏0
  • TP5學(xué)習(xí)記錄(Controller篇)

    摘要:可以在入口文件中定義,然后新建文件夾,達(dá)到將應(yīng)用配置放到該文件的目的,這樣方便將配置進(jìn)行統(tǒng)一管理。動(dòng)態(tài)配置返回?cái)?shù)據(jù)類(lèi)型功能同上張三男請(qǐng)求成功 ThinkPHP5 ThinkPHP是一個(gè)免費(fèi)開(kāi)源的、快速簡(jiǎn)單的、面向?qū)ο蟮?、輕量級(jí)PHP開(kāi)發(fā)框架。 為什么選擇ThinkPHP5? ThinkPHP5采用了全新的架構(gòu)思想; 優(yōu)化了核心是一個(gè)顛覆性的版本; 支持composer方式安裝; 對(duì)...

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

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

0條評(píng)論

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