php的兩種復合數據類型是什么意思_2.4PHP復合數據類型:數組和對象

Posted by 撒得一地 on 2015年9月29日 in PHP入門教程

國外穩定加速器推薦

vypr |

Nord

PHP中復合數據類型包括兩種,即數組和對象。

array(數組):一組數據的集合。

object(對象):對象是類型的實例,使用new命令來創建。

數組(array)

數組是一組數據的集合,它把一系列數據組織起來,形成一個可操作的整體。數組中可以包括很多數據類型,如字符串,整型,對象,數組,資源等。

PHP中的數組實際上是一個有序映射,映射是一種把values關聯到keys的類型。數組中的每個數據稱為一個元素,元素包括索引(鍵名)和值兩個部分。數組中的值還可以再是數組,這樣就形成了多維數組。

定義數組的語法格式如下:

$array = ('value1','value2'......)

$array[key] = 'value'

$array = array(key1=>value1,key2=>value2......)

元素的索引(key)可以由數字或字符串組成,元素的值(value)可以是任意類型的值。

其中,參數key是數組元素的下標,value是數組下標所對應的元素。所以,數組其實用逗號分隔的鍵(key) => 值(value)對。

最后一個數組單元之后的逗號可以省略,例如常用array(1,2)而不是array(1,2,)。對多行數組定義通常保留最后一個逗號,這樣要添加一個新單元時更方便。

自 5.4 起可以使用短數組定義語法,用 [] 替代 array()。

例子1:

$array ?= array(

"foo" ?=> ?"bar" ,

"bar" ?=> ?"foo" ,

);

// 自 PHP 5.4 起

$array ?= [

"foo" ?=> ?"bar" ,

"bar" ?=> ?"foo" ,

];

?>

此外 key 會有如下的強制轉換:

1. ?包含有合法整型值的字符串會被轉換為整型。例如鍵名 "8" 實際會被儲存為 8。但是 "08" 則不會強制轉換,因為其不是一個合法的十進制數值。

2. ?浮點數也會被轉換為整型,意味著其小數部分會被舍去。例如鍵名 8.7 實際會被儲存為 8。

3. ?布爾值也會被轉換成整型。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0。

4. Null ?會被轉換為空字符串,即鍵名 null 實際會被儲存為 ""。

5. ?數組和對象不能被用為鍵名。堅持這么做會導致警告:Illegal offset type。

如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最后一個,之前的都被覆蓋了。

例子2:

$array ?= array(

1 ? ? => ?"a" ,

"1" ? => ?"b" ,

1.5 ? => ?"c" ,//1.5被替換為1

true ?=> ?"d" ,//true被替換為1

);

var_dump ( $array );

?>

以上輸出:

array(1) {

[1]=>string(1) "d"

}

在數組中,如果想取得數組中某一個數的值,可以用數組名加下標(索引)的方法取得特定值。

如果對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一。如果指定的鍵名已經有了值,則該值會被覆蓋。

例子3:

$array = array(

1 => 3,

'a' => b,

1 => 4,

2 => 5,

5);

//如果想取得5,只要用$array[2]

echo $array[2]."
";

//修改$array[2]的值 將其值改為7

$array[2] = 7;

/*因為上面定義了兩個相同的索引1,不過后面

的后定義值會覆蓋前面的值,可以打印看下

*/

//print_r是php自定義函數,用于打印數組

print_r($array);

?>

上面的執行結果是先輸出5,然后打印出數組:

5

Array

(

[1] => 4

[a] => b

[2] => 7

[3] => 5

)

上面值為5沒定義鍵值,php會默認取之前最大的整數索引值的下一個整數(即原有的索引值加1)為其鍵值。php默認最小的整數索引值為0。

要修改某個值,通過其鍵名給該單元賦一個新值。要刪除某鍵值對,對其調用 unset() 函數。

例子4:

$arr ?= array( 5 ?=> ?1 , ?12 ?=> ?2 );

//將索引為5的值1改為42

$arr [ 5 ] = ?42 ;

//刪除數組中索引5和其對應的值

unset( $arr [ 5 ]);

//刪除整個數組

unset( $arr );

?>

對象(object)

php中應用到的編程方法有兩種:面向過程和面向對象。面向對象是模擬現實世界來進行編程的一種方法。

要創建一個新的對象 object ,使用 new 語句實例化一個類:

class ?foo

{

function ?do_foo ()

{

echo ?"Doing foo." ;

}

}

$bar ?= new ?foo ;

$bar -> do_foo ();

?>

這部分放在后面講解。

... other posts by psz1992

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258395.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python守護進程和腳本單例運行

2019獨角獸企業重金招聘Python工程師標準>>> 一、簡介 守護進程最重要的特性是后臺運行;它必須與其運行前的環境隔離開來,這些環境包括未關閉的文件描述符、控制終端、會話和進程組、工作目錄以及文件創建掩碼等;它可以在系統啟動…

分析access.log

cat access.log | awk {print $4,$1,$9} | awk -F/ {print $3}| awk -F: {print $2 ":" $3,$4} | awk {print $1,$3,$4} | uniq -c | sort -n轉載于:https://www.cnblogs.com/olderblue/p/4778339.html

AD20學習筆記4---網表導入及模塊化布局設計

前言: 本文學習視頻是B站點擊率第一的凡億教育《Altium Designer 20 19(入門到精通全38集)四層板智能車PCB設計視頻教程》,視頻地址:Altium Designer 20 19(入門到精通全38集)四層板智能車PCB設…

Paoding-Rose學習

* HttpServletRequest.getContextPath 獲取web程序root。如果是默認位置,返回””空串,否則返回 /根路徑名 * rose是如何掃描到資源的 利用spring提供的類掃描類和jar* rose建立匹配樹的過程 傳入根節點和List,按照路徑建立每個節點 * Module…

楪祈機器人_饑荒 Inori楪祈人物MOD V20161211

使用說明:1.解壓縮2.復制所有文件到游戲目錄mods3.啟動游戲,點擊mods(模組)加載MOD適用游戲版本:理論上支持所有版本的饑荒(普通,巨人,海難,聯機版)MOD說明:饑荒 Inori楪祈人物MOD;由…

javascript 模塊化

2019獨角獸企業重金招聘Python工程師標準>>> 一直好奇像node.js,require.js的模塊化是怎么做的,在看了《你不知道的javascript》后,對js的模塊化有了一些簡單的了解。這本書真的還不錯。 書里講述了js的模塊化的原理 和 現代js實現模塊化的簡…

AD20學習筆記5---PCB設計規則設置及PCB手工布線

前言: 本文學習視頻是B站點擊率第一的凡億教育《Altium Designer 20 19(入門到精通全38集)四層板智能車PCB設計視頻教程》,視頻地址:Altium Designer 20 19(入門到精通全38集)四層板智能車PCB設…

理論物理極礎9:相空間流體和吉布斯-劉維爾定理

萊尼喜歡看河,尤其喜歡看漂浮物順流而下。他猜想漂浮物如何穿過礁石,如何陷入漩渦。但是河流整體,水量,流切變,河的分流和匯聚,這是萊尼所看不到的。 相空間流體 在經典力學里,注視一個特別的初…

ComponentName的意思

ComponentName是用來打開其它應用程序中的Activity或服務的。 使用方法: Intent inew Intent();i.setComponent(new ComponentName(String packageName,String activityName ));startActivity(i); 轉載于:https://www.cnblogs.com/hrhguanli/p/3861243.html

nginx沒有worker進程_如何優雅地關閉worker進程?

點擊上方“武培軒”,選擇“設為星標”技術文章第一時間送達!之前我們講解 Nginx 命令行的時候,可以看到 Nginx 停止有兩種方式,分別是 nginx -s quit 和 nginx -s stop,其中 stop 是指立即停止 Nginx,而 qu…

[Python3]Python面向對象的程序設計

[Python3]Python面向對象的程序設計 一、面向對象的程序設計的由來 1.第一階段:面向機器,1940年以前 最早的程序設計都是采用機器語言來編寫的,直接使用二進制碼來表示機器能夠識別和執行的指令和數據。 簡單來說,就是直接編寫 0 和 1 的序列來代表程序語…

RC電路輸出波形的時域與頻域分析

RC一階電路為例進行時域和頻域分析,激勵Us為方波,以Uc作為輸出的波形相當于積分電路的輸出曲線,以Ur作為輸出的波形相當于微分電路的輸出曲線。電容對輸入電壓具有平滑作用,平滑程度與時間常數有關,衰減程度與帶寬設計…

JQuery之編寫彈窗

演示地址&#xff1a;http://sandbox.runjs.cn/show/irefekbs <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>*{ margin: 0; padding: 0;}#login { z-index:9999…

[ext/iconv/iconv.lo] Error 1

辦法1&#xff1a; wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxvf libiconv-1.13.1.tar.gz cd libiconv- 1.13.1 ./configure make make install 辦法2&#xff1a; wget http://down.wdlinux.cn/in/iconv_ins.sh sh iconv_ins.sh轉載于:https:/…

多麥克風做拾音的波束_麥克風陣列是什么 有哪些關鍵技術?

麥克風陣列是什么 有哪些關鍵技術&#xff1f;亞馬遜Echo和谷歌Home爭奇斗艷&#xff0c;除了云端服務&#xff0c;他們在硬件上到底有哪些差異&#xff1f;我們先將Echo和Home兩款音箱拆開來看&#xff0c;區別最大的還是麥克風陣列技術。Amazon Echo采用的是環形61麥克風陣列…

如何用AD20打開ddb文件

用AD20直接打開ddb文件會報錯&#xff0c;在AD20中使用導入向導才是ddb文件的正確打開方式。 1.用AD20直接打開ddb文件的報錯提示 2.使用導入向導打開ddb文件 除了以下兩處關鍵設置的地方&#xff0c;一路next就行。

Codeforces Round #419 (Div. 2)

1.題目A&#xff1a;Karen and Morning 題意&#xff1a; 給出hh:mm格式的時間&#xff0c;問至少經過多少分鐘后&#xff0c;該時刻為回文字符串&#xff1f; 思路&#xff1a; 簡單模擬&#xff0c;從當前時刻開始&#xff0c;如果hh的回文rh等于mm則停止累計。否則&#xff…

Java NIO 系列教程

Java NIO&#xff08;New IO&#xff09;是從Java 1.4版本開始引入的一個新的IO API&#xff0c;可以替代標準的Java IO API。本系列教程將有助于你學習和理解Java NIO。感謝并發編程網的翻譯和投遞。 &#xff08;關注ITeye官微&#xff0c;隨時隨地查看最新開發資訊、技術文章…

使用語句修改數據表結構

查詢表信息&#xff1a; sp_help dbo.T_User; 修改columnName 字段為空 alter table dbo.T_User alter column columnName datetime null; 修改columnName 默認值 ALTER TABLE dbo.T_User ADD CONSTRAINT [DF_T_User_columnName ] DEFAULT 0 FOR [columnName ];轉載于:https://…

變換上三角矩陣_關于馬爾可夫矩陣的一些個人研究成果、思考過程及相關解釋...

在幾個月以前&#xff0c;曾經有一位知乎好友邀請我回答一個問題&#xff1a;“如何證明馬爾可夫矩陣至少存在一個所有分量均不小于零的特征向量。”當時我思考了大概半個小時&#xff0c;給出了嚴謹的證明。事后由該問題引發我至少三度思考&#xff0c;對于此問題&#xff0c;…