参照—この記号は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

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

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

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

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

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ジェイ・ブルースはどうやら子供を妊娠することによってメッツから離れて取引されていることを祝った

ジェイ・ブルースはどうやら子供を妊娠することによってメッツから離れて取引されていることを祝った

あなたが一時的に会っていなかったとき。シーズン11-1を開始したチームであるニューヨークメッツは、日曜日の午後にフィラデルフィアで行われた最後の11試合の9試合目を失いました。

スティーブンキングのアウトサイダーはトランプ時代のそれです

スティーブンキングのアウトサイダーはトランプ時代のそれです

スティーブン・キングのアウトサイダーは、多くの点で先祖返りの小説であり、80年代の全盛期から引き裂かれたように見える生き物の特徴であり、おそらくセル以来の彼の最もパルプのような本ですが、今日の恐怖の中で間違いなく設立された作品です。表面上は、形を変えるペニーワイズのような子供たちの殺人者を中心としており、その最も暗い脅威は、封じ込められず、神経質に平凡なものよりも幻想的で打ち負かされません。

スティーブンユニバースは、強烈な内部エピソードのペアで、それ自体のバックストーリーをさりげなく粉砕します

スティーブンユニバースは、強烈な内部エピソードのペアで、それ自体のバックストーリーをさりげなく粉砕します

スティーブンユニバースビーチシティのエピソードが実行されるたびに、いくつかのクライマックスイベントが発生し、スティーブンユニバースのより広い神話に対する理解の一部が失われます。これはあなたが期待していたことですか?今日のエピソードは両方とも、容赦なくゆっくりと、シーズンの終盤の主要な部分を設定する決定的な結論に向かって進みます。そして、ロナウドは、静かな納屋が倒れているのを発見した夜中にスティーブンを捕まえるためにやって来ます。月に。

ディズニーワールドの旅行のヒントを教えてください

ディズニーワールドの旅行のヒントを教えてください

「光が触れるものはすべて私たちの王国です。」今週のHackYour Cityでは、1つのテーマパークを取り上げます。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language