ホームページ > バックエンド開発 > PHPの問題 > PHPループ内で配列が重複しない

PHPループ内で配列が重複しない

王林
リリース: 2023-05-19 22:22:09
オリジナル
548 人が閲覧しました

PHP では、配列は強力で重要なデータ型です。ループ内で配列を操作する必要がある場合、配列の値が重なっていることがわかり、誤った結果が生じる可能性があります。この記事では、PHP ループにおける配列オーバーレイの問題を回避する方法について説明します。

まず、PHP における配列の基本概念を理解しましょう。 PHP では、配列は、各要素が一意のキー (数値または文字列) を持つ、順序付けられたコレクションです。配列は次の方法で定義できます。

$myArray = array("apple", "banana", "orange");
ログイン後にコピー

ループ内で配列を操作する場合、通常は for ループまたは foreach ループを使用して配列内の要素を反復処理します。以下は、for ループを使用して配列を走査する例です:

$myArray = array("apple", "banana", "orange");

for ($i = 0; $i < count($myArray); $i++) {
    echo $myArray[$i] . ", ";
}
ログイン後にコピー

出力結果は次のとおりです:

apple, banana, orange, 
ログイン後にコピー

上記のコードでは、count() 関数を使用して数値を取得します。配列内の要素の値を取得し、for を使用して配列内の各要素をループし、echo ステートメントを使用して各要素の値を出力します。

ここで、ループ内で配列に対していくつかの操作を実行し、おそらく配列の値が重ね合わされているため、結果が正しくないことが判明したとします。たとえば、配列内のすべての文字列の文字数をカウントし、結果を別の配列に保存したいとします。

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
ログイン後にコピー
ログイン後にコピー

出力結果は次のとおりです。

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードでは、 strlen () 関数を使用して各文字列の文字数を取得し、結果を $charCountArray 配列に保存します。しかし、配列内の値が重ね合わされており、ループごとに配列の値が増加し、不正確な最終結果が得られることがわかりました。これは、PHP では配列の割り当て方法が「参照渡し」であるためです。つまり、配列を操作するとき、実際には配列のコピーを操作するのではなく、元の配列の参照を操作します。 。

この問題を回避するには、次の 2 つの方法を使用できます。

方法 1: キー名を使用して結果を保存する

この問題のキー名を使用できます。配列の値が重複しないように、ループ内で配列を使用して結果を保存します。以下はサンプル コードです:

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
ログイン後にコピー
ログイン後にコピー

出力結果は次のとおりです:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードでは、添字を使用する代わりに、配列のキー名 $i を使用して結果を保存します。配列の。このように、各要素は一意のキー名を持ち、配列の値が重複することはありません。

方法 2: ループ前に配列をリセットする

配列値の重複を避けるために、ループ前に配列をリセットできます。以下はサンプル コードです:

$myArray = array("apple", "banana", "orange");
$charCountArray = array();

// 重置数组
$charCountArray = array_pad($charCountArray, count($myArray), 0);

for ($i = 0; $i < count($myArray); $i++) {
    $charCountArray[$i] = strlen($myArray[$i]);
}

print_r($charCountArray);
ログイン後にコピー

出力結果は方法 1 と同じです:

Array
(
    [0] => 5
    [1] => 6
    [2] => 6
)
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のコードでは、array_pad() 関数を使用して配列をリセットします。 array_pad() 関数は、指定された長さまで配列を指定された値でパディングします。このコードでは、パディングの値を指定していないため、デフォルトは 0 であるため、配列内のすべての要素が 0 でパディングされます。

概要

PHP ループでは、配列オーバーレイの問題を回避する 2 つの方法があります。キー名を使用して結果を保存するか、ループ前に配列をリセットします。どちらの方法を使用しても、配列の重ね合わせによる誤った結果を回避できます。これらの方法を理解して習得すると、PHP 開発をより効率的かつ正確に行うことができます。

以上がPHPループ内で配列が重複しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート