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
相關文章
- js物件陣列Date的比較JS物件陣列
- 分割陣列的幾種方法比較陣列
- 技術卡片 - PHP 陣列強制轉換與 array_wrap 方法的比較PHP陣列
- 比較兩個陣列是否相等陣列
- 比較兩個陣列中是否有相同的元素陣列
- 【淺出 PHP】陣列相加和陣列合並的區別PHP陣列
- 一個陣列和另一個陣列比較,如果第一個陣列裡面有的就不新增了陣列
- PHP比較字串PHP字串
- Rust與Java程式碼比較:將二維陣列轉為三維陣列RustJava陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 優先佇列的比較器佇列
- C++與Rust引用外部符號的比較C++Rust符號
- 列舉比較
- PHP陣列學習之計算陣列元素總和PHP陣列
- php比較運算子的安全問題PHP
- 《每天用對比的思想學點 golang》PHP Python 對比 Golang 中的陣列 切片 mapGolangPHPPython陣列
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- ==和equals方法的比較
- Go和Python比較的話,哪個比較好?GoPython
- php手冊 php陣列的遍歷有哪幾種方式?php陣列如何遍歷?PHP陣列
- php去除陣列中的鍵名PHP陣列
- 有序佇列比較佇列
- React.js和Vue.js的語法並列比較ReactVue.js
- PHP專題-PHP陣列PHP陣列
- php 清空陣列PHP陣列
- PHP 陣列系列PHP陣列
- php服務端處理json和陣列的組合PHP服務端JSON陣列
- PHP陣列轉換為js陣列PHP陣列JS
- 視訊課程-空陣列的比較-冰山工作室-沙翼-web前端陣列Web前端
- php型別比較表PHP型別
- TreeMap和HashMap的元素比較HashMap
- scala陣列與java陣列對比陣列Java
- js 深比較和淺比較JS
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- 【Java】int[] 陣列 和 Integer陣列的轉換Java陣列
- PHP 刪除陣列中元素的方式PHP陣列
- PHP 陣列的雜湊碰撞攻擊PHP陣列
- xml與陣列的相互轉換——phpXML陣列PHP