PHPマージ後に配列が空の場合の対処方法

PHPz
リリース: 2023-04-20 14:42:55
オリジナル
800 人が閲覧しました

広く使用されているプログラミング言語として、PHP には非常に強力な配列操作関数があります。その中でも配列の結合は非常に実用的な機能の一つです。しかし実際に使ってみると、マージされた配列が空だったりすることがありますが、どうなっているのでしょうか?

1. 配列の結合の基本的な方法

まず、PHP での配列の結合の基本的な方法を確認しましょう。 PHP には、配列のマージに使用できる関数が 3 つあり、array_merge()、array_merge_recursive()、operator です。

1. array_merge() 関数

この関数は、2 つ以上の配列の値を 1 つの配列にマージし、マージされた配列を返すために使用されます。これは次のように使用されます。

$resultArray = array_merge($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

array_merge() は任意の数の配列を使用でき、同じキー名については、最後のキー名に対応する値のみが保持され、キー名に対応する値は保持されます。以前のキー名は無視されます。

2. array_merge_recursive() 関数

この関数は array_merge() 関数に似ていますが、2 つ以上の配列を 1 つの配列に再帰的にマージし、マージされた配列を返します。これは次のように使用されます。

$resultArray = array_merge_recursive($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

array_merge_recursive() は任意の数の配列を使用することもでき、同じキー名の場合、値を 1 つの配列にマージします。

3. 演算子

PHP では、演算子を使用して配列を結合することもでき、2 つの配列の値を 1 つの配列に結合し、結合された配列を返します。これは次のように使用されます。

$resultArray = $array1 + $array2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

この演算子は、任意の数の配列に対しても使用できます。同じキー名の場合、最初の配列に対応する値のみが保持され、それ以降の配列に対応する値は無視されます。

2. マージされた配列が空の場合の状況

上記の 3 つの方法を使用して配列をマージすると、マージされた結果が空の配列になることがあります。残念です。混乱しています。では、なぜこのようなことが起こるのでしょうか?

1. キー名の競合によりマージが失敗する

上記の 3 つの方法を使用して配列をマージする場合、2 つの配列に同じキー名が存在すると、マージ操作が失敗する可能性があります。は空の配列です。

たとえば、2 つの配列 $array1 と $array2 があり、それらのキー名は同じで、配列は次のとおりです:

$array1 = array("a" => "A", "b" => "B"); $array2 = array("a" => "AA", "c" => "C");
ログイン後にコピー

array_merge() 関数を使用してマージすると、

$resultArray = array_merge($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

キー名の競合によりマージ操作は失敗し、$resultArray の結果は空の配列になります。

同様に、以下に示すように、array_merge_recursive() 関数を使用してマージする場合:

$resultArray = array_merge_recursive($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マージ操作はキー名の競合により失敗し、$resultArray の結果も次のようになります。空の配列。

以下に示すように、演算子を使用してマージすると、

$resultArray = $array1 + $array2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

マージ操作はキー名の競合によっても失敗し、$resultArray の結果は空の配列のままになります。

2. 空の配列が原因でマージが失敗する

キー名の競合に加えて、2 つの配列の一方または両方の配列が空の場合もマージ操作は失敗します。結果は次のようになります。空の配列。

たとえば、以下に示すように、配列が空の配列の場合:

$array1 = array(); $array2 = array("a" => "A");
ログイン後にコピー

以下に示すように、array_merge() 関数を使用してマージする場合:

$resultArray = array_merge($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、配列 $array1 が空の配列であるため、マージ操作は失敗し、$resultArray の結果は空の配列になります。

同様に、以下に示すように、array_merge_recursive() 関数を使用してマージする場合:

$resultArray = array_merge_recursive($array1, $array2);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列 $array1 が空の配列であり、$ の結果が返されるため、マージ操作は失敗します。 resultArray も空になります。

次のように演算子を使用してマージすると:

$resultArray = $array1 + $array2;
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

配列 $array1 は空の配列であるため、$resultArray の結果は $array2 自体、つまり $resultArray になります。 = $配列2。

3. 配列のマージが失敗しないようにする

上記の 3 つの方法を使用して配列をマージするときに空の配列を避けるために、いくつかの方法を使用してこの状況を防ぐことができます。

1. isset() 関数を使用して配列が空かどうかを判断します

上記の 3 つの方法を使用して配列を結合する場合、isset() 関数を使用して配列が空かどうかを判断できます。これにより、マージの失敗が回避されます。

たとえば、配列 $array1 と $array2 をマージする場合、次のように配列が空かどうかを判断できます。

if (isset($array1) && isset($array2)) { $resultArray = array_merge($array1, $array2); }
ログイン後にコピー

これにより、$arrays1 が空になる状況を回避できます。または $array2 が空です。

同様に、array_merge_recursive() 関数または演算子を使用できる場合は、isset() 関数を使用して配列が空かどうかを判断することもできます。

2. array() 関数を使用して配列を初期化する

上記の 3 つの方法を使用して配列を結合する場合、配列がマージされるときに array() 関数を使用して配列を初期化することもできます。これにより、マージの失敗が回避されます。

たとえば、空の配列 $emptyArray がある場合、次のように初期化できます:

$emptyArray = array();
ログイン後にコピー

このように、array_merge() 関数、array_merge_recursive() 関数または演算子を使用する場合、配列 $emptyArray と $array2 をマージしたい場合は、次のようにすることができます:

$resultArray = array_merge($emptyArray, $array2);
ログイン後にコピー

この方法では、マージの失敗はありません。

3. 概要

配列は PHP の最も強力な関数の 1 つであり、配列の結合も一般的な操作です。しかし、実際のアプリケーションでは、マージされた配列が空であることが時々わかります。このとき、キー名の競合が原因である可能性もあれば、配列が空であることが原因である可能性もあります。この状況を回避するには、isset() 関数を使用して配列が空かどうかを判断し、array() 関数を使用して配列を初期化します。このようにして、配列の結合操作を正常に完了できます。

以上がPHPマージ後に配列が空の場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!