参照—この記号はPHPで何を意味しますか?

4616
Gordon 2010-09-18 06:24.

これは何ですか?

これは、PHPの構文について時々出てくる質問のコレクションです。これもコミュニティWikiであるため、誰もがこのリストの管理に参加するように招待されています。

どうしてこれなの?

以前は、演算子やその他の構文トークンに関する質問を見つけるのは困難でした。¹
主なアイデアは、Stack Overflowの既存の質問へのリンクを用意することです。そのため、PHPマニュアルからコンテンツをコピーするのではなく、それらを参照する方が簡単です。

注:2013年1月以降、StackOverflowは特殊文字をサポートしています。検索語を引用符で囲むだけです。例:[php] "==" vs "==="

ここで何をすればいいですか?

そのような質問をしたために誰かからここで指摘された場合は、以下の特定の構文を見つけてください。リンクされた質問と一緒にPHPマニュアルにリンクされたページは、おそらくあなたの質問に答えるでしょう。もしそうなら、あなたは答えに賛成することをお勧めします。このリストは、他の人が提供したヘルプに代わるものではありません。

リスト

特定のトークンが以下にリストされていない場合は、パーサートークンのリストにある可能性があります。


& ビット演算子または参照

  • アンパサンドでPHP関数を開始するとはどういう意味ですか?
  • PHPと(アンパサンド、ビット単位および)演算子を理解する
  • PHPの「&」演算子
  • PHPの&と&&の違い
  • ここで「&」はPHPで何を意味しますか?
  • この場合、「&」はどういう意味ですか?
  • PHPで「&」記号はどういう意味ですか?
  • この署名はPHPで(&)とはどういう意味ですか?
  • 「&」演算子はPHP関数でどのように機能しますか?
  • PHPで&in&2はどういう意味ですか?
  • ビット演算子はいつ使用する必要がありますか?
  • オブジェクトの前でアンパサンドを使用する必要はありますか?(&$)

=& 参考文献

  • PHPの参照代入演算子、=
  • PHPの「=&」および「&=」演算子はどういう意味ですか?
  • '&='および '=&'演算子は何をしますか?
  • PHPで=はどういう意味ですか?

&= ビット演算子

  • PHPの「=&」および「&=」演算子はどういう意味ですか?
  • '&='および '=&'演算子は何をしますか?

&& 論理演算子

  • 演算子としての「AND」と「&&」
  • PHPの&と&&の違い
  • PHPの「and」演算子と「&&」演算子に違いはありますか?
  • PHP-および/またはキーワード

% 算術演算子

  • PHPでパーセント記号はどういう意味ですか?
  • PHP演算子%とは何ですか?実際の例でどのように使用しますか?

!! 論理演算子

  • PHPのダブルではない(!!)演算子

@ エラー制御演算子

  • PHPでの@記号の使用法は何ですか?
  • PHPの変数名の前のアットマーク:@ $ _ POST
  • PHP関数と@functions
  • PHPコードで@を使用する必要がありますか?
  • PHPで@はどういう意味ですか?

?: 三項演算子

  • PHP演算子「?」とは何ですか?と「:」が呼び出され、彼らは何をしますか?
  • ?:PHPの演算子(「エルビス演算子」)
  • 「?」で行われる条件文についてはどこで読むことができますか?および「:」(コロン)?
  • PHP 5.3の使用?:演算子

?? ヌル合体演算子(PHP 7以降)

  • PHPでのC#のnull合体演算子(??)

?string ?int ?array ?bool ?float null許容の戻り値の型宣言(PHP 7.1以降)

  • null許容の戻り値の型宣言

: 制御構造の代替構文、三項演算子

  • PHPの「:」とは何ですか?
  • PHPで「:」とはどういう意味ですか?

:: スコープ解決演算子

  • PHPで2つのコロンはどういう意味ですか?
  • PHPトークン名T_PAAMAYIM_NEKUDOTAYIMの意味は何ですか?
  • PHPの::(二重コロン)と->(矢印)の違いは何ですか?
  • PHPのレイトスタティックバインディングとは正確には何ですか?
  • static :: staticFunctionName()
  • 予期しないT_PAAMAYIM_NEKUDOTAYIM、T_NS_Separatorが必要です

\ 名前空間

  • PHPのバックスラッシュ-それはどういう意味ですか?
  • \(バックスラッシュ)はPHP(5.3+)で何をしますか?

-> クラスとオブジェクト

  • 「->」PHP演算子は何と呼ばれ、コードを大声で読み取るときにどのように言いますか?
  • PHPのオブジェクト演算子「->」はどこで使用しますか?
  • PHPの::(二重コロン)と->(矢印)の違いは何ですか?
  • PHP構文は何ですか $var1->$var2はどういう意味ですか?
  • PHPで「->」とはどういう意味/参照ですか?

=> 配列

  • PHPで「=>」とはどういう意味ですか?
  • PHPでの=>の使用
  • 何をしますか $k => $v foreach($ex as $k => $ v)はどういう意味ですか?

^ ビット演算子

  • ビット演算子XOR( '^')はどのように機能しますか?
  • PHPで^はどういう意味ですか?

>> ビット演算子

  • PHPで>>はどういう意味ですか?

<< ビット演算子

  • PHPでの奇妙な印刷動作?

<<< ヒアドキュメントまたはNowdoc

  • PHPで<<< ENDはどういう意味ですか?
  • PHP式<<< EOB
  • PHPでは、「<<<」は何を表していますか?
  • PHPで<<< CONを使用する
  • PHPのこの種の構文は何ですか?

= 代入演算子

  • 3つの異なる等しい

== 比較演算子

  • PHPの等式(==二重に等しい)と同一性(===三重に等しい)の比較演算子はどのように異なりますか?
  • PHP!=および==演算子
  • 3つの異なる等しい
  • PHPでの型ジャグリングと(厳密な)大きい/小さい比較

=== 比較演算子

  • 「===」とはどういう意味ですか?
  • PHPの等式(==二重に等しい)と同一性(===三重に等しい)の比較演算子はどのように異なりますか?
  • 3つの異なる等しい
  • PHPでの型ジャグリングと(厳密な)大きい/小さい比較

!== 比較演算子

  • PHPの!==比較演算子はどういう意味ですか?
  • PHPの!==と!=に違いはありますか?

!= 比較演算子

  • PHP!=および==演算子
  • PHPの!==と!=に違いはありますか?
  • 比較すると、!==と!=
  • <>と!=の違いは何ですか

<> 比較演算子

  • PHP演算子<>
  • PHPの<>演算子
  • <>と!=の違いは何ですか
  • PHPでの型ジャグリングと(厳密な)大きい/小さい比較

<=> 比較演算子(PHP 7.0以降)

  • 宇宙船(宇宙船)演算子

| ビット演算子

  • |の違いは何ですか および|| 演算子?
  • 単一のパイプを使用するとどうなりますか '|' 関数の引数で実行しますか?

|| 論理演算子

  • |の違いは何ですか および|| 演算子?
  • PHP-および/またはキーワード
  • 正確には何ですか|| 平均?
  • PHPでのor演算子の動作

~ ビット演算子

  • この〜演算子はここでどういう意味ですか?

+ 算術演算子、配列演算子

  • + PHPの配列の演算子?

+=および-= 代入演算子

  • + =は何に使用されますか?
  • PHPドキュメントの `$ page- = 1`はどういう意味ですか?

++および-- 演算子のインクリメント/デクリメント

  • インクリメントを理解する
  • 以下の回答

.= 代入演算子

  • PHPの。=と+ =の違いは何ですか?
  • PHPの行を理解するには

. 文字列演算子

  • エコーとリターンを連結する場合のピリオドとコンマの違いは?
  • 何をしますか。(ドット)PHPで行いますか?

, 関数の引数

  • エコーとリターンを連結する場合のピリオドとコンマの違いは?

, 変数宣言

  • 変数宣言でコンマはどういう意味ですか?

$$ 変数変数

  • PHPで$$(ドルまたはダブルドル)はどういう意味ですか?
  • PHPの「$$」とは
  • $ function()と$$ variable

` 実行演算子

  • バックティックは何と呼ばれていますか?

<?= 短いオープンタグ

  • この記号はPHPで何を意味しますか<?=
  • PHPで「<?=」とはどういう意味ですか?
  • <?=はどういう意味ですか?

[] 配列(PHP 5.4以降の短い構文)

  • PHP配列...空のブラケットの意味は何ですか?
  • []の意味は何ですか
  • PHP array_push()とmyArray []
  • PHP配列から読み取る場合、[]はどういう意味ですか?
  • 配列の省略形:リテラルの$var = []空の配列

<? タグの開始と終了

  • PHPの短いタグを使用できますか?

... 引数の解凍(PHP 5.6以降)


** べき乗(PHP 5.6以降)


# 1行のシェルスタイルのコメント

  • PHPのコメントにハッシュを使用できますか?

:? null許容の戻り値の型

  • 疑問符(?type)でヒントを与えるphpメソッド引数タイプ

?-> NullSafeオペレーター呼び出し(PHP 8.0以降)

  • この記号は、オブジェクトまたはnull値内のphpで「?->」を意味します

20 answers

1206
Peter Ajtai 2010-09-18 06:30.

演算子のインクリメント/デクリメント

++ インクリメント演算子

-- デクリメント演算子

Example    Name              Effect
---------------------------------------------------------------------
++$a Pre-increment Increments $a by one, then returns $a. $a++       Post-increment    Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a. $a--       Post-decrement    Returns $a, then decrements $a by one.

これらは変数の前または後に行くことができます。

変数の前に置くと、最初に変数に対してインクリメント/デクリメント操作が実行され、次に結果が返されます。変数の後に置くと、最初に変数が返され、次にインクリメント/デクリメント操作が実行されます。

例えば:

$apples = 10; for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

実例

上記の場合++$iは高速なので使用します。$i++同じ結果になります。

事前インクリメントは、実際に変数をインクリメントし、その後「結果を返す」ため、少し速くなります。ポストインクリメントは特別な変数を作成し、そこに最初の変数の値をコピーし、最初の変数が使用された後でのみ、その値を2番目の変数に置き換えます。

ただし、$apples--最初に現在のリンゴの数を表示し、次にそれから1を引くため、を使用する必要があります。

PHPで文字をインクリメントすることもできます。

$i = "a"; while ($i < "c") {
    echo $i++;
}

z到達したらaa次、というように続きます。

文字変数はインクリメントできますが、デクリメントはできません。その場合でも、プレーンASCII文字(azおよびAZ)のみがサポートされていることに注意してください。


スタックオーバーフローの投稿:

  • インクリメントを理解する
450
Ankur Saxena 2012-11-01 03:28.

ビット演算子

少し何ですか?ビットは1または0の表現です。基本的にOFF(0)およびON(1)

バイトとは何ですか?バイトは8ビットで構成され、バイトの最大値は255です。これは、すべてのビットが設定されることを意味します。バイトの最大値が255である理由を見ていきます。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

この1バイトの表現

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255(1バイト)

理解を深めるためのいくつかの例

「AND」演算子: &

$a = 9; $b = 10;
echo $a & $b;

これにより、数値8が出力されます。なぜですか。さて、テーブルの例を使って見てみましょう。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a | 0| 0| 0| 0| 1| 0| 0| 1| ------------------------------------------- | $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

したがって、表から、それらが共有する唯一のビットは8ビットであることがわかります。

2番目の例

$a = 36; $b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100 $b = 01100111

2つの共有ビットは32と4であり、これらを合計すると36を返します。

「Or」演算子: |

$a = 9; $b = 10;
echo $a | $b;

これにより、数値11が出力されます。なぜですか。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a | 0| 0| 0| 0| 1| 0| 0| 1| ------------------------------------------- | $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

8、2、および1列に3ビットが設定されていることがわかります。それらを合計します:8 + 2 + 1 = 11。

305
Sherif 2015-07-09 06:44.

<=> 宇宙船オペレーター

PHP7で追加

宇宙船操作者が <=>それであるPHP 7に加え、最新の比較演算子である非結合等価演算子と同じ優先順位を持つバイナリ演算子(==!====!==)。この演算子を使用すると、左側のオペランドと右側のオペランドをより簡単に3者間で比較できます。

演算子の結果は次の整数式になります。

  • 0 両方のオペランドが等しい場合
  • 未満の0時に左オペランドレス右辺のオペランドより
  • より大きく0左オペランド右オペランドよりも大きいです

例えば

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

この演算子を使用する実用的なアプリケーションは、2つの値の3者間比較に基づいて、ゼロ、負、または正の整数を返すことが期待される比較タイプのコールバックです。渡される比較関数usortはそのような例の1つです。

PHP 7より前は、次のように記述します...

$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

PHP 7以降、次のように記述できます...

$arr = [4,2,1,3]; usort($arr, function ($a, $b) {
    return $a <=> $b;
});
284
Habeeb Perwad 2012-11-29 23:07.

_ gettext()のエイリアス

のような下線文字「_」_()は、gettext()関数のエイリアスです。

277
Ankur Saxena 2012-11-01 02:59.
Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
x or y     Or              True if any of x or y are true x=6 y=3
                           (x < 10 or y > 10) returns true 
x || y     Or              True if any of x or y are true x=6 y=3
                           (x < 3 || y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"
242
n.1 2013-04-24 18:43.

マジック定数:これらは単なるシンボルではなく、このトークンファミリーの重要な部分ですが。使用場所に応じて変化する8つの魔法の定数があります。

__LINE__:ファイルの現在の行番号。

__FILE__:ファイルのフルパスとファイル名。インクルード内で使用する場合、インクルードされたファイルの名前が返されます。PHP 4.0.2以降__FILE__、シンボリックリンクが解決された絶対パスが常に含まれていますが、古いバージョンでは、状況によっては相対パスが含まれていました。

__DIR__:ファイルのディレクトリ。インクルード内で使用する場合、インクルードされたファイルのディレクトリが返されます。これはと同等dirname(__FILE__)です。このディレクトリ名には、ルートディレクトリでない限り、末尾にスラッシュはありません。(PHP 5.3.0で追加されました。)

__FUNCTION__:関数名。(PHP 4.3.0で追加)PHP 5以降、この定数は宣言されたとおりの関数名を返します(大文字と小文字が区別されます)。PHP 4では、その値は常に小文字になります。

__CLASS__:クラス名。(PHP 4.3.0で追加)PHP 5以降、この定数は宣言されたとおりのクラス名を返します(大文字と小文字が区別されます)。PHP 4では、その値は常に小文字になります。クラス名には、宣言された名前空間が含まれます(例Foo\Bar)。PHP 5.4以降__CLASS__は、トレイトでも機能することに注意してください。トレイトメソッドで使用される場合、__CLASS__はトレイトが使用されるクラスの名前です。

__TRAIT__:特性名。(PHP 5.4.0で追加)PHP 5.4以降、この定数は宣言されたとおりの特性を返します(大文字と小文字が区別されます)。トレイト名には、宣言された名前空間が含まれます(例Foo\Bar)。

__METHOD__:クラスメソッド名。(PHP 5.0.0で追加)メソッド名は宣言されたとおりに返されます(大文字と小文字が区別されます)。

__NAMESPACE__:現在の名前空間の名前(大文字と小文字が区別されます)。この定数はコンパイル時に定義されます(PHP 5.3.0で追加)。

ソース

154
Maulik patel 2013-10-31 19:48.

タイプ演算子

instanceof PHP変数が特定のクラスのインスタンス化されたオブジェクトであるかどうかを判別するために使用されます。

<?php
class mclass { }
class sclass { }
$a = new mclass; var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

上記の例は次のように出力します。

bool(true)
bool(false)

理由:上記の例$aはのオブジェクトであるmclassため、のmclassインスタンスではなくデータのみを使用してくださいsclass

継承の例

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

上記の例は次のように出力します。

bool(true)
bool(true)

クローンの例

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); var_dump($b instanceof cloneable);

上記の例は次のように出力します。

bool(true)
bool(true)
139
John Slegers 2016-01-18 20:13.

PHP演算子の概要:


論理演算子:

  • $a && $b:両方の場合はTRUE$a and $bはTRUEです。
  • $a || $b:いずれかの場合はTRUE$a or $bはTRUEです。
  • $a xor $b:いずれかの場合はTRUE$a or $bはTRUEですが、両方ではありません。
  • !$ a: $ aがTRUEでない場合はTRUE。
  • $a and $b:両方の場合はTRUE$a and $bはTRUEです。
  • $a or $b:いずれかの場合はTRUE$a or $bはTRUEです。

比較演算子:

  • $a == $b:次の場合はTRUE$a is equal to $b型ジャグリング後。
  • $a === $b:次の場合はTRUE$a is equal to $b、およびそれらは同じタイプです。
  • $a != $b:次の場合はTRUE$a is not equal to $b型ジャグリング後。
  • $a <> $b:次の場合はTRUE$a is not equal to $b型ジャグリング後。
  • $a !== $b:次の場合はTRUE$a is not equal to $b、またはそれらは同じタイプではありません。
  • $a < $b:次の場合はTRUE$a is strictly less than $b。
  • $a > $b:次の場合はTRUE$a is strictly greater than $b。
  • $a <= $b:次の場合はTRUE$a is less than or equal to $b。
  • $a >= $b:次の場合はTRUE$a is greater than or equal to $b。
  • $a <=> $b:ゼロ未満、ゼロ以上、またはゼロより大きい整数$a is respectively less than, equal to, or greater than $b。PHP7以降で利用可能です。
  • $a ? $b:$ c:$ aが戻った場合$b else return $c(三項演算子
  • $a ?? $c:と同じ$a ? $a:$ c(null合体演算子-PHP> = 7が必要)

算術演算子:

  • -$ a$ aの反対。
  • $ a + $ b:$ aと$ bの合計。
  • $ a- $ b:$ aと$ bの違い。
  • $ a * $ b:$ aと$ bの積。
  • $ a / $ b:$ aと$ bの商。
  • $ a%$ b$ aの余りを$ bで割ったもの。
  • $ a ** $ b$ aを$ bの累乗にした結果(PHP 5.6で導入)

演算子のインクリメント/デクリメント:

  • ++ $ a:増分$a by one, then returns $a。
  • $ a ++:$ aを返し、$ aを1つインクリメントします。
  • -$ a:デクリメント$a by one, then returns $a。
  • $ a -:$ aを返し、$ aを1つ減らします。

ビット演算子:

  • $ a&$ b:$ aと$ bの両方に設定されているビットが設定されます。
  • $ a | $ b$ aまたは$ bのいずれかに設定されているビットが設定されます。
  • $ a ^ $ b$ aまたは$ bで設定されているが、両方ではないビットが設定されています。
  • 〜$ a$ aに設定されているビットは設定されておらず、その逆も同様です。
  • $ a << $ b$ a $ bステップのビットを左にシフトします(各ステップは「2を掛ける」ことを意味します)
  • $ a >> $ b$ a $ bステップのビットを右にシフトします(各ステップは「2で割る」ことを意味します)

文字列演算子:

  • $ a。$ b$ aと$ bの連結。

配列演算子:

  • $ a + $ b:$ aと$ bの和集合。
  • $ a == $ b:$ aと$ bのキーと値のペアが同じ場合はTRUE。
  • $ a === $ b:$ aと$ bのキーと値のペアが同じ順序で、同じタイプの場合はTRUE。
  • $ a!= $ b:$ aが$ bと等しくない場合はTRUE。
  • $ a <> $ b:$ aが$ bと等しくない場合はTRUE。
  • $ a!== $ b:$ aが$ bと同一でない場合はTRUE。

##代入演算子:

  • $ a = $ b$ bの値が$ aに割り当てられます
  • $ a + = $ b$ a =と同じ$a + $b
  • $a -= $b:と同じ$a = $a- $ b
  • $ a * = $b : Same as $a = $a * $b
  • $a /= $b:と同じ$a = $a / $ b
  • $ a%= $ b$ a =と同じ$a % $b
  • $a **= $b:と同じ $a = $a ** $ b
  • $ a。= $ b$ a =と同じ$a . $b
  • $a &= $b:と同じ$a = $a&$ b
  • $ a | = $ b$ a =と同じ$a | $b
  • $a ^= $b:と同じ$a = $a ^ $ b
  • $ a << = $ b$ a =と同じ$a << $b
  • $a >>= $b:と同じ$a = $a >> $ b
  • $ a ?? = $ b$ bの値はに割り当てられます$a if $aがnullまたは定義されていません(null合体代入演算子-PHP> = 7.4が必要です)

注意

and演算子とor演算子は、代入演算子よりも優先順位が低くなり=ます。

これは、$a = true and false;がと同等であることを意味し($a = true) and falseます。

ほとんどの場合、C、Java、JavaScriptなどの言語で知られている方法で動作する&&andを使用することをお勧めし||ます。

107
rajangupta 2015-10-12 04:15.

宇宙船オペレーター<=>(PHP 7で追加)

<=>宇宙船オペレーターの例(PHP 7、出典:PHPマニュアル):

変数の3者間比較のための整数、浮動小数点数、文字列、配列、およびオブジェクト。

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
// Comparison is case-sensitive
echo "B" <=> "a"; // -1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; $b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; $b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; $b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; $b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1
76
mnv 2015-11-24 10:27.

{} 中括弧

  • ブロック-中括弧/中括弧なし?
  • PHPの文字列の中括弧
  • 配列表記のPHP中括弧

そして最後の投稿についてのいくつかの言葉

$x[4] = 'd'; // it works $x{4} = 'd'; // it works

$echo $x[4]; // it works
$echo $x{4}; // it works

$x[] = 'e'; // it works $x{} = 'e'; // does not work

$x = [1, 2]; // it works $x = {1, 2}; // does not work

echo "${x[4]}"; // it works echo "${x{4}}"; // does not work

echo "{$x[4]}"; // it works echo "{$x{4}}"; // it works
69
VIPIN A ROY 2016-11-01 03:38.

ヌル合体演算子(??)

この演算子は、三項演算子をと組み合わせて使用​​する必要がある一般的なケースのために、PHP7.0で追加されましたisset()。存在し、存在しない場合は、最初のオペランドを返しますNULL。それ以外の場合は、2番目のオペランドを返します。

<?php
// Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. $username = $_GET['user'] ?? 'nobody'; // This is equivalent to: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
65
devpro 2015-12-17 21:41.

PHP文字列: PHP文字列は、2つの方法だけでなく、4つの方法で指定できます。

1)一重引用符:

$string = 'This is my string'; // print This is my string

2)二重引用符:

$str = 'string';

$string = "This is my $str"; // print This is my string

3)ヒアドキュメント:

$string = <<<EOD
This is my string
EOD; // print This is my string

4)Nowdoc(PHP 5.3.0以降):

$string = <<<'END_OF_STRING'
    This is my string 
END_OF_STRING; // print This is my string
49
Webeng 2016-06-13 01:07.

質問:

どういう=>意味ですか?


回答:

=>"Key" => "Value"連想配列のペアを区切るために人間が使用することにしたシンボルです。

精緻化:

これを理解するには、連想配列とは何かを知る必要があります。従来のプログラマーが(PHPで)配列について考えるときに最初に出てくるのは、次のようなものです。

$myArray1 = array(2016, "hello", 33);//option 1 $myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3 $myArray3[] = 2016; 
$myArray3[] = "hello"; $myArray3[] = 33;

一方、コードの後の部分で配列を呼び出したい場合は、次のようにすることができます。

echo $myArray1[1];// output: hello echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

ここまでは順調ですね。しかし、人間として、我々はそれが難しいそのインデックスを覚えておくことが見つけるかもしれない[0]配列のの値である年間2016、インデックス[1]配列のはある挨拶、そしてインデックス[2]配列のは簡単である整数値。その場合の代替手段は、連想配列と呼ばれるものを使用することです。連想配列には、シーケンシャル配列とはいくつかの違いがあります(これは、後続の値ごとに1ずつインクリメントすることで、所定のシーケンスで使用されるインデックスをインクリメントするため、前のケースと同じです)。

違い(シーケンシャル配列と連想配列の違い):

  • 連想配列の宣言value中に、配列に入れたいものを含めるだけでなくkey、配列を呼び出すときに使用するインデックス値(と呼ばれる)を後の部分に入れます。コード。宣言時には、次の構文が使用されます"key" => "value"

  • 連想配列を使用する場合、key値は配列のインデックス内に配置され、目的のを取得しますvalue

例えば:

    $myArray1 = array( 
        "Year" => 2016, 
        "Greetings" => "hello", 
        "Integer_value" => 33);//option 1

    $myArray2 = [ "Year" => 2016, "Greetings" => "hello", "Integer_value" => 33];//option 2 $myArray3 = [];//option 3
    $myArray3["Year"] = 2016; $myArray3["Greetings"] = "hello"; 
    $myArray3["Integer_value"] = 33;

そして今、以前と同じ出力を受け取るために、key値は配列インデックスで使用されます:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello echo $myArray3["Greetings"];// output: hello

最後のポイント:

したがって、上記の例から、配列内の値の開始時に、記号が配列内=>keyとの各valueペア間の連想配列の関係を表すために使用されていることが非常に簡単にわかります。

37
dev.mraj 2017-03-18 20:05.

質問

ここで「&」はPHPで何を意味しますか?

PHPの「&」演算子

慣れれば生活が楽になります。(以下の例をよく確認してください)

通常、両方に設定されているビットをチェックします$a and $bが設定​​されます。

これらの呼び出しがどのように機能するかに気づいたことさえありますか?

   error_reporting(E_ERROR | E_WARNING | E_PARSE);
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    error_reporting(E_ALL & ~E_NOTICE);
    error_reporting(E_ALL);

したがって、上記のすべての背後には、ビット演算子とビットのゲームがあります。

これらの便利なケースの1つは、以下のような簡単な構成です。したがって、1つの整数フィールドに数千のコンボを格納できます。

ほとんどの人はすでにドキュメントを読んでいますが、これらのビット演算子の実際のユースケースに依存していません。

あなたが好きになる例

<?php

class Config {

    // our constants must be 1,2,4,8,16,32,64 ....so on
    const TYPE_CAT=1;
    const TYPE_DOG=2;
    const TYPE_LION=4;
    const TYPE_RAT=8;
    const TYPE_BIRD=16;
    const TYPE_ALL=31;

    private $config; public function __construct($config){
        $this->config=$config;

        if($this->is(Config::TYPE_CAT)){ echo 'cat '; } if($this->is(Config::TYPE_DOG)){
            echo 'dog ';
        }
        if($this->is(Config::TYPE_RAT)){ echo 'rat '; } if($this->is(Config::TYPE_LION)){
            echo 'lion ';
        }
        if($this->is(Config::TYPE_BIRD)){ echo 'bird '; } echo "\n"; } private function is($value){
        return $this->config & $value;
    }
}

new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird
31
Parth Nayak 2017-10-04 03:28.

==変数のデータ型考慮せずに同等性をチェックするために使用されます

===数値データ型の両方の同等性をチェックするために使用されます

$a = 5

  1. if ($a == 5) -trueと評価されます

  2. if ($a == '5') -この両方の値を比較するときに、PHPはその文字列値を内部的に整数に変換してから、両方の値を比較するため、trueと評価されます

  3. if ($a === 5) -trueと評価されます

  4. if ($a === '5') -値が5であるため、falseと評価されますが、この値5は整数ではありません。

28
Yogi Ghorecha 2017-12-07 06:05.

ヌル合体演算子「??」(PHP 7で追加)

オペレーターの最もキャッチーな名前ではありませんが、PHP 7はかなり便利なヌル合体をもたらすので、例を共有したいと思いました。

PHP 5には、値をテストし、trueを返す場合は2番目の要素を返し、そうでない場合は3番目の要素を返す3項演算子がすでにあります。

echo $count ? $count : 10; // outputs 10

最初の要素と同じ場合は、2番目の要素をスキップできるようにする省略形もあります。echo$ count?:10; // 10も出力します

PHP 7では、さらに??を取得します。演算子。これは、通常2つの疑問符を一緒に使用する方法である極端な混乱を示すのではなく、値の文字列を連鎖させることができます。左から右に読むと、存在し、nullではない最初の値が返される値です。

// $a is not set
$b = 16; echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16

この構成は、おそらくユーザー入力または既存の構成からの1つ以上の値を優先し、その構成が欠落している場合に特定のデフォルトに安全にフォールバックするのに役立ちます。これはちょっとした機能ですが、アプリケーションがPHP7にアップグレードしたらすぐに使用することを私は知っています。

13
John Conde 2019-01-17 02:42.

null許容の戻り値の型宣言

PHP 7では、戻り値の型宣言のサポートが追加されています。引数の型宣言と同様に、戻り値の型宣言は、関数から返される値の型を指定します。戻り値の型の宣言には、引数の型の宣言に使用できるのと同じ型を使用できます。

厳密な型指定は、戻り値の型の宣言にも影響します。デフォルトのウィークモードでは、戻り値がまだそのタイプでない場合、戻り値は正しいタイプに強制変換されます。ストロングモードでは、戻り値は正しいタイプである必要があります。そうでない場合、TypeErrorがスローされます。

PHP 7.1.0以降、型名の前に疑問符(?)を付けることで、戻り値をnull許容としてマークできます。これは、関数が指定された型またはNULLのいずれかを返すことを意味します。

<?php
function get_item(): ?string {
    if (isset($_GET['item'])) { return $_GET['item'];
    } else {
        return null;
    }
}
?>

ソース

8
Yogi Ghorecha 2019-10-01 05:21.

スプラット演算子としての3つのドット(...)(PHP 5.6以降)

PHPには、Splat演算子と呼ばれる演算子「...」(3つのドット)があります。関数内で任意の数のパラメーターを渡すために使用され、このタイプの関数は可変個引数関数と呼ばれます。「...」(3つのドット)の使用例を見てみましょう。

例1:

<?php
function calculateNumbers(...$params){ $total = 0;
    foreach($params as $v){
        $total = $total + $v; } return $total;
}

echo calculateNumbers(10, 20, 30, 40, 50);

//Output 150
?>

「…」を使用すると、calculateNumbers()関数の各引数が配列として$ paramsを通過します。

「…」演算子を使用するには、さまざまな方法があります。いくつかの例の下:

例2:

<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
    $total = $no1 + $no2 + $no3 + $no4 + $no5;
    return $total; } $numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);

//Output 150
?>

例3:

<?php
function calculateNumbers(...$params){
    $total = 0; foreach($params as $v){ $total = $total + $v;
    }
    return $total; } $no1 = 70;
$numbers = array(10, 20, 30, 40, 50); echo calculateNumbers($no1, ...$numbers);

//Output 220
?>

例4:

<?php
function calculateNumbers(...$params){
    $total = 0; foreach($params as $v){ $total = $total + $v;
    }
    return $total; } $numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500); echo calculateNumbers(...$numbers1, ...$numbers2);

//Output 1650

?>
3
Berto99 2020-06-04 07:24.

php8以降のNullSafe演算子 "?->"(おそらく)

PHP8では、この新しい演算子が受け入れられています。ドキュメントはここにあります。?->これはNullSafe Operatornull関数を呼び出したり、null...から値を取得しようとした場合に返されます。

例:

<?php
$obj = null; $obj = $obj?->attr; //return null $obj = ?->funct(); // return null
$obj = $objDrive->attr; // Error: Trying to get property 'attr' of non-object
?>
3
John Conde 2020-06-04 07:20.

?-> NullSafe演算子

PHP8.0で追加

これはNullSafe Operatornull関数を呼び出したり、から値を取得しようとした場合に返されますnull。Nullsafe演算子は連鎖させることができ、メソッドとプロパティの両方で使用できます。

$objDrive = null; $drive = $objDrive?->func?->getDriver()?->value; //return null $drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object

Nullsafe演算子は、配列キーでは機能しません。

$drive['admin']?->getDriver()?->value //Warning: Trying to access array offset on value of type null

$drive = []; $drive['admin']?->getAddress()?->value //Warning: Undefined array key "admin"

Related questions

MORE COOL STUFF

「水曜日」シーズン1の中心には大きなミステリーがあります

「水曜日」シーズン1の中心には大きなミステリーがあります

Netflixの「水曜日」は、典型的な10代のドラマ以上のものであり、実際、シーズン1にはその中心に大きなミステリーがあります.

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ボディーランゲージの専門家は、州訪問中にカミラ・パーカー・ボウルズが輝くことを可能にした微妙なケイト・ミドルトンの動きを指摘しています

ケイト・ミドルトンは、州の夕食会と州の訪問中にカミラ・パーカー・ボウルズからスポットライトを奪いたくなかった、と専門家は言う.

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンがハリー・スタイルズとオリビア・ワイルドの「非常に友好的な」休憩が永続的であることを望んでいる理由

一部のファンが、オリビア・ワイルドが彼女とハリー・スタイルズとの間の「難しい」が「非常に友好的」な分割を恒久的にすることを望んでいる理由を見つけてください.

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする 

エリザベス女王の死後、ケイト・ミドルトンはまだ「非常に困難な時期」を過ごしている、と王室の専門家が明らかにする&nbsp;

エリザベス女王の死後、ケイト・ミドルトンが舞台裏で「非常に困難な時期」を過ごしていたと伝えられている理由を調べてください.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

HMSプリンスオブウェールズの橋はスターウォーズからまっすぐです

HMSプリンスオブウェールズの橋はスターウォーズからまっすぐです

BAE Systems Maritimeは昨日、英国海軍の2番目のクイーンエリザベスクラスの空母であるHMSプリンスオブウェールズのブリッジモジュールを展開しました。公海を航海するよりも、アウターリムの惑星を周回してタイファイターを発射する必要があるようです。70,000の排水量のトン運搬船は、2020年に就役し、姉のエリザベス女王と同様に、約40機の航空機を運ぶ予定です。

ルイビルはサヨナラゲームでウェイクフォレストを倒すために家を盗んだ

ルイビルはサヨナラゲームでウェイクフォレストを倒すために家を盗んだ

ルイビルは、通常の大学野球の強みであるピッチング、ディフェンス、スマートベースランニングを通じて、全国ランキングのトップ5と19-2の会議記録への道を歩みました。昨夜、彼らは野球の最もエキサイティングなプレーの1つである盗塁を使用して、ウェイクフォレストのスイープを完了しました。

おいしいツイストのためにコーンブレッドであなたの次のサンドイッチを作りましょう

おいしいツイストのためにコーンブレッドであなたの次のサンドイッチを作りましょう

粗いパン粉とふわふわの食感のコーンブレッドは、唐辛子を吸い上げるのに理想的な乗り物です。しかし、それだけではありません。

別の驚くべきマーベルヒーローがキャプテンアメリカに参加します:シビルウォー!

別の驚くべきマーベルヒーローがキャプテンアメリカに参加します:シビルウォー!

ニール・ブロムカンプが、チャッピーが第10地区をどのように遅らせたのかについて話します。フォースの覚醒の噂は、次の予告編に何を期待するかについてのいじめを提供します。

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、彼らが子供たちと行っているスパイをテーマにした活動を共有しています

ケイト・ミドルトンとウィリアム王子は、子供向けのパズルの本の序文を書き、ジョージ王子、シャーロット王女、ルイ王子と一緒にテキストを読むと述べた.

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

事故で押しつぶされたスイカは、動物を喜ばせ水分補給するために野生生物保護団体に寄付されました

Yak's Produce は、数十個のつぶれたメロンを野生動物のリハビリ専門家であるレスリー グリーンと彼女のルイジアナ州の救助施設で暮らす 42 匹の動物に寄付しました。

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

デミ・ロヴァートは、新しいミュージシャンのボーイフレンドと「幸せで健康的な関係」にあります: ソース

8 枚目のスタジオ アルバムのリリースに向けて準備を進めているデミ ロヴァートは、「スーパー グレート ガイ」と付き合っている、と情報筋は PEOPLE に確認しています。

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

Plathville の Kim と Olivia Plath が数年ぶりに言葉を交わすことへようこそ

イーサン プラスの誕生日のお祝いは、TLC のウェルカム トゥ プラスビルのシーズン 4 のフィナーレで、戦争中の母親のキム プラスと妻のオリビア プラスを結びつけました。

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

仕事の生産性を高める 8 つのシンプルなホーム オフィスのセットアップのアイデア

ホームオフィスのセットアップ術を極めよう!AppExert の開発者は、家族全員が一緒にいる場合でも、在宅勤務の技術を習得しています。祖父や曽祖父が共同家族で暮らしていた頃の記憶がよみがえりました。

2022 年、私たちのデジタル ライフはどこで終わり、「リアル ライフ」はどこから始まるのでしょうか?

20 年前のタイムトラベラーでさえ、日常生活におけるデジタルおよびインターネットベースのサービスの重要性に驚くことでしょう。MySpace、eBay、Napster などのプラットフォームは、高速化に焦点を合わせた世界がどのようなものになるかを示してくれました。

ニューロマーケティングの秘密科学

ニューロマーケティングの秘密科学

マーケティング担当者が人間の欲望を操作するために使用する、最先端の (気味が悪いと言う人もいます) メソッドを探ります。カートをいっぱいにして 3 桁の領収書を持って店を出る前に、ほんの数点の商品を買いに行ったことはありませんか? あなたは一人じゃない。

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

地理情報システムの日: GIS 開発者として学ぶべき最高の技術スタック

私たちが住んでいる世界を確実に理解するには、データが必要です。ただし、空間参照がない場合、このデータは地理的コンテキストがないと役に立たなくなる可能性があります。

Language