PHP的的陣列和比較符
初學php,看著php前期的語法和c何其類似,不由輕車前進,勿入陷阱.比如陣列和比較符。
php的陣列在c看來完全就是一個高階的hash表.而且同一個hash表的key可以是int,string和並存。
陣列的格式為:
$arr = array(k1=>v1,k2=>v2,...kn=>v2);
$arr = array(f,l,step);//得到f,l區間增序或減序的陣列,step為遞增或遞減的步長.
下面是一些陣列定義的形式。
$arr = array("abc",'def','123'); // 沒有指定key時,key自動為0,後面的同樣沒有指定key的元素的key以前面的最大的大於0的整數key+1.
print_r($arr); // [0] => abc [1] => def [2] => 123
$arr = range(0,10);//步長1
$arr = range(10,1,2); //步長2,遞減,不包括 1
$arr = range('a','d'); //字元
$arr = range('as','de'); //如果fl都不是數字,和數字字串,則取第1個字元作為f,l
$arr = range('a',5);//如果f,l其中一個是數字或者數字字串,另外一個不是,則不是的視為0.
上面的輸出
Array ( [0] => 0 1 => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 ) Array ( [0] => 10 1 => 8 [2] => 6 [3] => 4 [4] => 2 ) Array ( [0] => a 1 => b [2] => c [3] => d ) Array ( [0] => a 1 => b [2] => c [3] => d ) Array ( [0] => 0 1 => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 )
上面的key都是整數且挨個遞增或遞減的。下面的就體現hash表的特點了
$arr = array(-2=>1,$arr[0],2);//沒指定key的預設只會從大於等於0的最大數遞增
$arr = array('a'=>'a','b','c','b'=>'d','e',10000=>'f','g',10=>'h','i',0=>11);
上面的輸出
Array ( [-2] => 1 [0] => 0 1 => 2 ) Array ( [a] => a [0] => 11 1 => c [b] => d [2] => e [10000] => f [10001] => g [10] => h [10002] => i )
多維陣列和上面一樣,就是元素的值也是array,如
$arr = array(0,range(0,3),'a');
print_r($arr);print '< br/>';
print_r($arr[1]);print '< br/>';
上面的輸出:
Array ( [0] => 0 1 => Array ( [0] => 0 1 => 1 [2] => 2 [3] => 3 ) [2] => a ) Array ( [0] => 0 1 => 1 [2] => 2 [3] => 3 )
php的比較符因為其弱語言,變數無型別的特點導致比較操作時頗為複雜曲折。有下面幾個規則:
1.整數和字串比較:字串會被轉化為數字,如果轉化不了則為0.(比如‘ads’ == 0) 2.false:NULL,整數0,浮點0.0,字串'0',空的字串陣列物件,未生命的變數,都為false;其他為true. 3.陣列之間的比較:成員數小的小返回-1;成員數大的大,返回1;如果其中一陣列的key在另外的陣列內不存在則無法比較,無法比較返回null;完全相等返回0; 4.陣列和其他型別比較:陣列總是更大 5.物件和其他型別比較:物件總是更大
只有理解上面的轉化,才不會出現因為0 == '0',0 == NULL,等價於 '0' == NULL這樣的錯誤。
下面是正確的判斷。
0 == '0'
0 == '-0'
1 == '+1'
NULL == 0
NULL != '0'
'0xa'==0xa == 10
'fdada'==0
NULL == false
false == 0
相關文章
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- js物件陣列Date的比較JS物件陣列
- 分割陣列的幾種方法比較陣列
- Java、C、C++中的陣列的比較JavaC++陣列
- 比較兩個陣列是否相等陣列
- PHP基礎教程-18 比較操作符PHP
- 技術卡片 - PHP 陣列強制轉換與 array_wrap 方法的比較PHP陣列
- PHP物件的比較PHP物件
- IIS下PHP的ISAPI和FastCGI比較PHPAPIAST
- PHP使用使用者自定義的比較函式對陣列中的值進行排序PHP函式陣列排序
- 【淺出 PHP】陣列相加和陣列合並的區別PHP陣列
- 一個陣列和另一個陣列比較,如果第一個陣列裡面有的就不新增了陣列
- C#中陣列Array、ArrayList、泛型List<T>的比較C#陣列泛型
- 比較JS合併陣列的各種方法及其優劣JS陣列
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- PHP中的比較運算子PHP
- php關聯陣列和索引陣列差別PHP陣列索引
- PLSQL Language Referenc-PL/SQL集合和記錄-集合比較-和NULL比較可變陣列和巢狀表變數SQLNull陣列巢狀變數
- Zope的優點和Apache+PHP+MySQL的比較(轉)ApachePHPMySql
- PHP比較字串PHP字串
- Rust與Java程式碼比較:將二維陣列轉為三維陣列RustJava陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 優先佇列的比較器佇列
- C++與Rust引用外部符號的比較C++Rust符號
- PHP陣列學習之計算陣列元素總和PHP陣列
- Php陣列PHP陣列
- php的陣列轉為物件PHP陣列物件
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- php比較運算子的安全問題PHP
- 有序佇列比較佇列
- ruby4種比較符號符號
- php手冊 php陣列的遍歷有哪幾種方式?php陣列如何遍歷?PHP陣列
- 《每天用對比的思想學點 golang》PHP Python 對比 Golang 中的陣列 切片 mapGolangPHPPython陣列
- Go和Python比較的話,哪個比較好?GoPython
- React.js和Vue.js的語法並列比較ReactVue.js
- scala陣列與java陣列對比陣列Java
- php去除陣列中的鍵名PHP陣列