ホームページ  >  記事  >  バックエンド開発  >  PHP の何がそんなに特別なのでしょうか? Java との浅い比較

PHP の何がそんなに特別なのでしょうか? Java との浅い比較

WBOY
WBOYオリジナル
2016-06-23 13:12:13854ブラウズ

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 と同様に言語構造であるということです。 () を使用して 1 つのパラメーターを出力することも、'' または "" を使用して複数のパラメーターを、で区切って出力することもできます (例: 上記の echo $name,' is me)。これはその文法であり、if...else... を学ぶ場合と同じように、これを理解することによってのみ、ルールを越えずに好きなことを行うことができます。

初心者は、このようなステートメント echo '076402276aae5dbec7f672f8f4e5cc81' に混乱する可能性があります。PHP は一重引用符内でこれを解析しないため、ブラウザは 076402276aae5dbec7f672f8f4e5cc81 を直接出力する必要があると考えます。ああ、PHP は解析しませんが、ブラウザは解析します。ブラウザは HTML タイプのデータを受け取り、それを解析してユーザーに提示するのではないでしょうか? PHP が 076402276aae5dbec7f672f8f4e5cc81 をブラウザに与えると、ブラウザはそれを改行に解析します。何か問題がありますか?

配列についてもう一度話しましょう。

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<br/>";}//第二种foreach($arr as $key=>$value){//同上,不过同时保存了键值。    echo "$key = $value<br/>";}

とても簡潔ですね。インターネット時代においては、シンプルさ、効率性、そして帯域幅の無駄がないことが PHP のすべてです。

文字列と配列の変換について話しましょう

Java で文字列を配列に切り取る最も簡単な方法は次のとおりです:

String str = "1-2-3";String[] arr = str.splite("-");

PHP では展開関数が提供されています:

$str = "1-2-3"; $arr = explode("-",$str);

Java String で配列を変換します

String str2 = Arrays.toString(arr);//是"[1, 2, 3]"//或者要自定输出格式的话StringBuilder sb = new StringBuilder();for(int i=0;i<arr.length;i++){    sb.append(arr[i]);    if(i!=arr.length-1){        sb.append("-");    }}String str3 = sb.toString();//是"1-2-3"

でも、PHP ではそれほど面倒なことはなく、implode 関数を使うだけです。

rreee

すべてがとてもシンプルになり、世界は突然良くなります。

配列と言えば、配列のソートは本当に避けられません

Java では、配列をソートするために Arrays.sort() のオーバーロードされたメソッドが多数提供されています。

rreee

PHPではそこまで面倒ではありませんが、もちろんカスタマイズはそれほどうまくありません。

$str2 = '['.implode(",",$arr).']'; //是"[1, 2, 3]"$str3 = implode("-",$arr); //是"1-2-3"

フォームについてもう少し詳しく説明しましょう

フォームを使用して複数選択した値を送信する場合、name 属性の値の後に「[]」を付ける必要があることに注意してください。そうしないと、PHP は代わりに 1 つの値を受け取ります。配列。例:

client.html

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<Integer>() {    @Override    public int compare(Integer o1, Integer o2) {        return o2-o1;    }});// 为 "[9, 7, 5, 2, 1]"

server.php

$ranks = array(    2,9,1,5,7);sort($ranks); //按值升序排序rsort($ranks); //r表示reverse,相反的意思。按值降序排序asort($ranks); //a表示association,键值联系的意思。保持键值关系升序排序arsort(); //保持键值关系降序排序ksort($ranks); //k表示key,按键升序排序krsort(); //按键降序排序

この記事のタイトル: PHP の特別な点は何ですか? Java との浅い比較 著者: IT Association Knowledge Base ライセンス: ©表示 - 非営利 - 継承 4.0"

クリエイティブ コモンズ ライセンス

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。