tags: 編程 Java PHP
PHP中的變數以$符號開頭,如果是全域變數則是以$_開頭並且都大寫,如$_REQUEST。在Java中變數可以是字母(a-z)、底線(-)或者貨幣符號($)開頭,並且變數必須先有型別宣告,如int i = 0,隨後才能使用。但是PHP卻不用,它的類型完全由賦值確定。你給它什麼,它就是什麼。那為什麼要強制使用美元符開頭呢?
記得在PHP中有這樣的輸出語句 echo "$name is me.",假如沒有美元符,PHP又如何識別$name是一個變數呢?
講到輸出語句,就不得單雙引號在PHP中區別。
在Java中,我們使用輸出語句通常是System.out.println();括弧裡可以是任意基本類型+String。而在PHP中輸出語句更豐富,有echo,print,print_r還有var_dump。以echo為例,假定$name = 'Lshare';。對於echo '$name is me.',PHP將不會對單引號裡面的字串進行解析,而是直接輸出$name is me.;對於echo "$name is me.",PHP對雙引號裡的字串進行解析,輸出Lshare is me.。雙引號的代價是效率上比單引號差,但可讀性好。為了提高效能,你可能這樣使用 echo $name.' is me.'或echo $name,' is me.',明顯可讀性會差點,但是效能上比用雙引號好,因為不用去解析引號內的字串了。
有趣的是echo和print他們並不是函數,而是語言結構,就好像if、else那樣。你既可以使用()來輸出單個參數,也可以使用''或""輸出多個參數,中間用,隔開,如上文中的echo $name,' is me.'。這就是它的文法,就好像你學習if...else...一樣,懂了這些才可以隨心所欲而不逾矩。
初學者可能會對這樣的語句感到疑惑echo '
',認為瀏覽器應該直接輸出
,因為單引號內,PHP是不會進行解析的。哈,PHP是不解析,但是瀏覽器解析啊。回想一下,瀏覽器不就是接收Html類型的資料,然後解析呈現給使用者嗎?PHP把
給了瀏覽器,然後瀏覽器解析成換行,難道有什麼不對嗎?
再談談數組。
在Java中我們通過int[] arr = new int[]{1,2,3};來建立一個數組,而在PHP中確實用array()函數來建立的。而且PHP中的數組還有索引值對的概念,這不是跟Java中的Map很像嗎?你可以不指定鍵,它會預設從0開始作為索引鍵;你也可以使用=>來指定鍵。如下:
$arr = array( "1"=>"Google", "3"=>"Microsoft", "2"=>"Apple");
說到數組就不得不談談遍曆
遍曆可以使用for迴圈,也可以使用foreach迴圈。for迴圈跟Java中的差不多,不談,還是談談foreach迴圈有趣。在Java中的foreach迴圈是這樣的:
int[] arr = new int[]{1,2,3};for(int item:arr){//":"前面是數組中元素的類型和臨時變數,後面的是數組 System.out.println(item);}
而在PHP中是這樣的:
$arr = array( 1,2,3);//第一種foreach($arr as $value){//as前面是數組,後面是數組中元素的臨時變數。 echo "$value
";}//第二種foreach($arr as $key=>$value){//同上,不過同時儲存了索引值。 echo "$key = $value
";}
簡潔了好多有木有?網路時代講究的簡潔高效,不浪費頻寬,PHP就是這樣。
談談字串和數組的轉化
在Java中將字串切割成數組,最簡單的是這樣:
String str = "1-2-3";String[] arr = str.splite("-");
而在PHP中提供了explode函數:
$str = "1-2-3"; $arr = explode("-",$str);
在Java中將數組轉成字串
String str2 = Arrays.toString(arr);//是"[1, 2, 3]"//或者要自定輸出格式的話StringBuilder sb = new StringBuilder();for(int i=0;i 而在PHP中沒那麼麻煩,直接用implode函數就夠了。
$str2 = '['.implode(",",$arr).']'; //是"[1, 2, 3]"$str3 = implode("-",$arr); //是"1-2-3" 一切變得如此簡潔,世界一下子就好了。
說到數組,還真的避不了數組排序
在Java中提供了Arrays.sort()的許多重載方法,用於數組的排序。
int[] ranks = new int[]{2,9,1,5,7};//使用預設的比較子,進行升序排序Arrays.sort(ranks); //為 "[1, 2, 5, 7, 9]"//自訂比較子,進行降序排序Integer[] ranks = new Integer[]{2,9,1,5,7};Arrays.sort(ranks, new Comparator() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; }});// 為 "[9, 7, 5, 2, 1]" 在PHP中沒那麼麻煩,當然定製性沒那麼好。
$ranks = array( 2,9,1,5,7);sort($ranks); //按值升序排序rsort($ranks); //r表示reverse,相反的意思。按值降序排序asort($ranks); //a表示association,索引值聯絡的意思。保持索引值關係升序排序arsort(); //保持索引值關係降序排序ksort($ranks); //k表示key,按鍵升序排序krsort(); //按鍵降序排序
再說一點表單的
當使用表單提交多選的值時,要注意name屬性的值後面要帶"[]",不然PHP中接收的是單個值而不是一個數組。如:
client.html
server.php
本文標題: PHP 有什麼特殊之處?與 Java 的淺層比較文章作者: IT協會知識庫許可協議: ©署名-非商用-相同方式共用 4.0"
知識共用許可協議