検索
ホームページバックエンド開発PHPチュートリアルPHPマスター| PHPのアレイオペレーター:興味深いが話されていない

PHPアレイ演算子の詳細な説明:あまり知られていないヒント

PHP Master | Array Operators in PHP: Interesting but Less Spoken

PHP演算子は、算術、割り当て、ビット操作、比較、エラー制御、実行、増分/減少、ロジック、文字列、配列、タイプ演算子の7つのカテゴリに分けることができます。この記事では、配列演算子に焦点を当て、配列と組み合わせて使用​​する場合の他の演算子の動作をカバーします。

キーポイント

  • PHPアレイ演算子には、ユニオン、平等、不平等、および非同一性が含まれます。 -同一。
  • ユニオンオペレーター()は、キーに従って2つの配列をマージし、2番目の配列の最初の配列に既に存在するキーを無視します。ただし、組合が配列値に基づいていることはしばしば誤解されていますが、実際には配列キーに基づいています。
  • ID操作者(===)は、対応するすべての値の要素、キー値のペア、要素順序、およびデータ型の数で2つの配列が同じかどうかを確認します。しかし、配列キーの場合、キーが整数であり、別の配列のキーと同様の整数文字列表現がある場合、それはゆるい一致をします。
  • アレイオペレーター以外のオペレーターをアレイに適用すると、
  • PHPの動作が異なります。たとえば、算術演算子をアレイに適用すると、致命的なエラーが発生します。増分/減少演算子は、配列に影響を与えません。

配列オペレーター

公式ドキュメントでは、各配列オペレーターについて簡単に説明します。これにより、各オペレーターの予想される結果を理解することが困難な場合があります。各配列オペレーターを詳しく見て、機能をより明確に理解しましょう。これらの演算子はすべてバイナリです。つまり、各演算子は2つの配列に正確に作用します。

配列ユニオン

最初はユニオンオペレーター()です。これは、アレイのキーに従って2つの配列のユニオンを提供します。ゆるいキーマッチングを実行し、2番目の配列の同等のキーが最初の配列に既に存在する場合、2番目の配列のすべてのキーは無視されます。 2番目の配列の残りのキー(および対応する値)は、最初の配列に追加されます。

<?php
$array1 = array('a', 'b', 'c');
$array2 = array('d', 'e', 'f', 'g', 'h', 'i');
print_r($array1 + $array2);
print_r($array2 + $array1);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => g
    [4] => h
    [5] => i
)
Array
(
    [0] => d
    [1] => e
    [2] => f
    [3] => g
    [4] => h
    [5] => i
)</code>
最初のprint_r()の場合、$ array2の最初の3つの要素には$ array1に既に存在するキーがあるため、結果配列では 'd'、 'e'、 'f'は無視されます。 2番目のprint_r()の場合、$ array1のすべてのキーが$ array2に既に存在するため、すべての要素は無視されます。一致する動作がゆるくなると、まったく予想外の結果が得られるかもしれませんが、最適化とゆるいコーディングのエキサイティングな機会も提供します。

<?php
$array1 = array('0' => 'a', '1' => 'b', '2' => 'c', '3' => 'd');
$array2 = array(false => 'e', 1 => 'f', 2 => 'g', 3 => 'h', 4 => 'i');
print_r($array1 + $array2);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => i
)</code>
人々はしばしば、組合が配列の値に基づいていることを誤解していますが、実際にはこのオペレーターはアレイキーの組合を実装しています。価値ベースのユニオンの場合、array_merge()とarray_unique()を組み合わせて使用​​できます。
<?php
$array1 = array('a', 'b', 'c');
$array2 = array('d', 'e', 'f', 'g', 'h', 'i');
print_r($array1 + $array2);
print_r($array2 + $array1);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => g
    [4] => h
    [5] => i
)
Array
(
    [0] => d
    [1] => e
    [2] => f
    [3] => g
    [4] => h
    [5] => i
)</code>

配列の平等

equalityオペレーター(==)は、2つの配列が類似しているかどうかを確認します。最初の配列のすべてのキー値ペアが2番目の配列に同等のキー値ペアがある場合、演算子はtrueを返します。値とキーにゆるく一致し、要素の順序を無視します。

<?php
$array1 = array('0' => 'a', '1' => 'b', '2' => 'c', '3' => 'd');
$array2 = array(false => 'e', 1 => 'f', 2 => 'g', 3 => 'h', 4 => 'i');
print_r($array1 + $array2);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => i
)</code>

両方の配列の要素は異なる順序でありますが、同じ値は各配列の同様のキーに結合します。ただし、両方の配列には異なるキー価値ペアがあるため、次の2つは等しくありません。

<?php
$union = array_unique(array_merge($array1, $array2));
print_r($union);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
    [7] => h
    [8] => i
)</code>
不均等な演算子(!=または&lt;&gt;)は、2つの配列が類似しておらず、等しい演算子にとって完全な反意語であるかどうかをチェックします。平等オペレーターは虚偽を返します。この演算子は真実であり、その逆もまた返します。

<?php
$array1 = array('1' => 1, '2' => 2, '3' => 3, '0' => 0);
$array2 = array(false => '0', 1 => '1', 2 => '2', 3 => '3');
var_dump($array1 == $array2);
?>
<code>bool(true)</code>
配列のID

ID操作者(===)は、2つの配列が同じかどうかを確認します。 2つの配列は、次の条件を満たしている場合と同じです。

同じ数の要素があります
  • は同じキー値のペア
  • を持っています
  • 同じ要素順序
  • を持っています
  • 対応するすべての値のデータ型は同じです
  • ただし、配列キーの場合、キーが整数であり、別の配列のキーと同様の整数文字列表現がある場合、ID演算子はゆるい一致を行います。この演算子は、フローティングポイント番号を文字列キーに厳密に一致させます。 PHPマニュアルはこの違いを述べていません。

<?php
$array1 = array(1, 2);
$array2 = array(2, 1);
var_dump($array1 == $array2);
?>
<code>bool(false)</code>
<?php
$array1 = array('1' => 1, '2' => 2, '3' => 3, '0' => 0);
$array2 = array(false => '0', 1 => '1', 2 => '2', 3 => '3');
var_dump($array1 != $array2);
?>
<code>bool(false)</code>
非同一性演算子(!==)は、2つの配列が異なるかどうかを確認します。繰り返しますが、この演算子はID演算子の正反対です。つまり、2つの配列が同じ場合、この演算子はFalseを返します。
<?php
// 数组几乎相同,但键的类型不同
$array1 = array('0' => '0', '1' => '1', '2' => '2', '3' => '3');
$array2 = array(0 => '0', 1 => '1', 2 => '2', 3 => '3');
var_dump($array1 === $array2);
?>
<code>bool(true)</code>

他の演算子と配列を使用します
<?php
// 两个数组中的元素顺序不同
$array1 = array('0' => '0', '1' => '1', '2' => '2', '3' => '3');
$array2 = array(1 => '1', 2 => '2', 3 => '3', 0 => '0');
var_dump($array1 === $array2);
?>
上記のオペレーター以外のオペレーターを配列に適用すると、
<code>bool(false)</code>
PHPの動作は異なります。これらの演算子のリストと、配列に適用したときの動作のリストを次に示します。

致命的なエラー:予期しないオペランドタイプ

PHPは、次の演算子が配列に適用されると致命的なエラーを発行します。

ビット操作非オペレーター(〜)

算術ネガティブ演算子( - )
  • 算術減算演算子( - )
  • 算術乗算演算子(*)
  • 算術師団演算子(/)
  • アレイを整数として扱います
  • 次の演算子とともに使用すると、配列は整数として扱われます。空の配列(要素なし)はint(0)と見なされ、空でない配列はint(1)と見なされます。
  • 論理非(!)は空の配列にtrueを返し、オペランド配列に1つ以上の要素がある場合にfalseを返します。
  • ビットと(&&)1つのオペランドが空でない場合は、0を返します。
  • ビットまたは(|)は、両方のオペランドが空である場合に0を返します。
  • ビット排他的(^)両方の配列が空または空でない場合は0を返します。配列の1つが空の場合は、1を返します。
  • 左シフト演算子(&lt;&lt;)を使用して、配列を左nステップに移動します。
  • 右シフト演算子(&gt;&gt;)は、右に移動することを除いて、左シフトと同様に動作します。
  • モジュール(%)は、両方の配列が空でない場合にtrueを返します。 2番目の配列が空の場合、「ゼロで分割された」エラーが発現されます。最初の配列が空の場合、0(0%1の結果)が返されます。
  • ロジスティックvs(&&およびおよび)は、配列が空である場合にfalseを返します。両方の配列が空でない場合はtrueを返します。
  • 論理的または(||およびまたは)オペランドアレイが空でない場合はtrueを返します。両方の配列が空の場合、falseが返されます。
  • 両方の配列が空または空でない場合、論理XOR(XOR)がfalseを返します。それ以外の場合、配列の1つが空の場合、trueを返します。
  • captアレイをブールにして、配列が空の場合はfalseを返し、それ以外の場合はtrueを返します。

アレイを文字列

として扱います

2つの配列を連結すると、文字列連結演算子(。)は各配列を文字列「配列」として扱い、これらの文字列を連結します。

<?php
$array1 = array('a', 'b', 'c');
$array2 = array('d', 'e', 'f', 'g', 'h', 'i');
print_r($array1 + $array2);
print_r($array2 + $array1);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => g
    [4] => h
    [5] => i
)
Array
(
    [0] => d
    [1] => e
    [2] => f
    [3] => g
    [4] => h
    [5] => i
)</code>

無効

増分/減少演算子(および - )は、配列に影響を与えません。

<?php
$array1 = array('0' => 'a', '1' => 'b', '2' => 'c', '3' => 'd');
$array2 = array(false => 'e', 1 => 'f', 2 => 'g', 3 => 'h', 4 => 'i');
print_r($array1 + $array2);
?>
<code>Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => i
)</code>

結論

配列で使用した場合、PHP演算子に関する実際のドキュメントはほとんどありませんが、詳細を確認するには、配列オペレーターのページにユーザーがサビされたコメントを表示できます。あなたの質問とコメントはここで大歓迎です。さらに説明していただければ幸いです。

Fotoliaの写真

PHPアレイオペレーターFAQ(FAQ)

PHPのさまざまな種類の配列演算子は何ですか?

PHPは、ユニオン()、平等(==)、アイデンティティ(===)、不平等(!=または&lt;&gt;)、および非対照的な平等(!==)を含むいくつかのタイプの配列演算子をサポートします。これらの各演算子は、異なる機能を実行します。たとえば、Union Operator()は配列を組み合わせ、等式オペレーター(==)は2つの配列が等しいかどうかをチェックし、IDオペレーター(===)は2つの配列が同じかどうかを確認します。

ユニオン()オペレーターはどのようにPHPで機能しますか?

PHPのUnion()オペレーターは、2つの数値を1つに組み合わせています。アレイの結合が必要です。つまり、2つの配列にすべての要素を含む配列を返します。配列に同じ文字列キーがある場合、最初の配列の値が使用され、2番目の配列の一致キーの値は無視されます。

平等(==)とID(===)演算子の違いは何ですか?

equality(==)演算子は、注文やデータ型に関係なく、2つの配列が同じキー/値のペアを持っているかどうかをチェックします。一方、ID(===)演算子は、2つの配列が同じ順序と同じデータ型のキー/値のペアが同じかどうかを確認します。

PHPの不平等(!=または&lt;&gt;)オペレーターはどのように機能しますか?

PHPの不均等な演算子は、!=または&lt;&gt;で表されます。配列が等しくない場合はtrueを返し、配列が等しい場合はfalseを返します。

PHPにおける非同一性(!==)演算子の役割は何ですか?

PHPの非同一性(!==)演算子は、2つの配列が異なるかどうかをチェックします。配列が同じではない場合はtrueを返します。

配列演算子はPHPで結合できますか?

はい、ArrayオペレーターをPHPで組み合わせて、より複雑な操作を実行できます。ただし、これを行う場合は、予期しない結果を避けるように注意してください。コンテキストのコンテキストで、複合演算子が論理的に重要であることを常に確認してください。

配列に配列オペレーターを使用して特定の値が含まれているかどうかを確認する方法は?

PHPでIN_ARRAY()関数を使用して、配列に特定の値が含まれているかどうかを確認できます。値が配列で見つかった場合、この関数はtrueを返します。

PHPアレイから特定の値を削除する方法は?

phpでarray_diff()関数を使用して、配列から特定の値を削除できます。この関数は、配列の値を別の配列の値と比較し、差を返します。

PHPで配列をソートする方法は?

PHPは、sort()、asort()、ksort()、およびusort()を含む配列をソートするための複数の関数を提供します。これらの各機能は、アレイを別の方法でソートするため、ニーズに最適なものを選択する必要があります。

PHPの配列の順序を逆転させる方法は?

phpでarray_reverse()関数を使用して、配列の順序を反転させることができます。この関数は、新しい一連の要素を逆の順序で返します。

以上がPHPマスター| PHPのアレイオペレーター:興味深いが話されていないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
トラフィックの高いウェブサイトのPHPパフォーマンスチューニングトラフィックの高いウェブサイトのPHPパフォーマンスチューニングMay 14, 2025 am 12:13 AM

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

PHPでの依存関係注射:初心者向けのコード例PHPでの依存関係注射:初心者向けのコード例May 14, 2025 am 12:08 AM

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

PHPパフォーマンス:アプリケーションを最適化することは可能ですか?PHPパフォーマンス:アプリケーションを最適化することは可能ですか?May 14, 2025 am 12:04 AM

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

PHPパフォーマンスの最適化:究極のガイドPHPパフォーマンスの最適化:究極のガイドMay 14, 2025 am 12:02 AM

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

PHP依存性噴射コンテナ:クイックスタートPHP依存性噴射コンテナ:クイックスタートMay 13, 2025 am 12:11 AM

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

PHPの依存噴射対サービスロケーターPHPの依存噴射対サービスロケーターMay 13, 2025 am 12:10 AM

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

PHPパフォーマンス最適化戦略。PHPパフォーマンス最適化戦略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPメールの検証:電子メールが正しく送信されるようにしますPHPメールの検証:電子メールが正しく送信されるようにしますMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。