ホームページ >バックエンド開発 >PHPの問題 >PHP配列統計の異なる値

PHP配列統計の異なる値

王林
王林オリジナル
2023-05-06 11:35:08445ブラウズ

PHP 開発では、配列は非常に一般的に使用されるデータ型であり、通常は一連のデータを格納するために配列を使用します。場合によっては、配列内のさまざまな要素が出現する回数を数えるなど、配列内のさまざまな値をカウントする必要があります。この記事では、PHP を使用して配列内のさまざまな値をカウントする方法を説明します。

  1. array_count_values 関数

PHP には、各値の出現回数をカウントするために使用できる組み込み関数 array_count_values があります。配列で。この関数のプロトタイプは次のとおりです。

array_count_values(array $array): array

この関数はパラメータとして配列を必要とし、キーが元の配列内の異なる値であり、値が回数である連想配列を返します。値は元の配列に表示されます。例:

$array = array(1, 1, 2, 3, 3, 3);
$count = array_count_values($array);
print_r($count);

出力:

Array(
    [1] => 2
    [2] => 1
    [3] => 3
)

ここでの元の配列は、によって返される連想配列内の [1, 1, 2, 3, 3, 3] です。この関数では、キー 1 が元の配列に 2 回出現し、キー 2 が元の配列に 1 回出現し、キー 3 が元の配列に 3 回出現します。元の配列。

この関数はインデックス配列と連想配列にのみ有効であり、他の種類の配列の場合は空の配列が返されることに注意してください。

  1. カスタム関数

array_count_values 関数を使用することに加えて、独自に関数を作成して同様の関数を完成させることもできます。以下は関数の例です:

function array_count_unique(array $array): array
{
    $counts = array();
    foreach ($array as $value) {
        if (isset($counts[$value])) {
            $counts[$value]++;
        } else {
            $counts[$value] = 1;
        }
    }
    return $counts;
}

この関数は配列を受け取り、連想配列を返します。キーは元の配列内の異なる値であり、値はその値が配列内に出現する回数です。元の配列。具体的な実装のアイデアは、元の配列を走査し、各値の出現回数を数え、その値をキーとして使用し、出現回数を値として使用して結果の配列を構築することです。

次のコードを使用してこの関数をテストできます:

$array = array(1, 1, 2, 3, 3, 3);
$count = array_count_unique($array);
print_r($count);

出力:

Array(
    [1] => 2
    [2] => 1
    [3] => 3
)

array_count_values 関数と同じ結果。

この関数はインデックス配列と連想配列にのみ有効であり、他の種類の配列の場合は空の配列が返されることに注意してください。

  1. パフォーマンスの比較

PHP の組み込み array_count_values 関数とカスタム関数を使用しても、さまざまな値をカウントする関数を完成できます。配列の場合、パフォーマンスは異なる場合があります。 microtime 関数を使用して、両方のメソッドのパフォーマンスをテストできます。

次は、array_count_values 関数を使用したテストの例です:

$array = range(1, 10000);
shuffle($array);
$start = microtime(true);
$count = array_count_values($array);
$end = microtime(true);
echo 'array_count_values: ' . ($end - $start) . ' seconds';

次は、カスタム関数を使用したテストの例です:

$array = range(1, 10000);
shuffle($array);
$start = microtime(true);
$count = array_count_unique($array);
$end = microtime(true);
echo 'array_count_unique: ' . ($end - $start) . ' seconds';

Two テスト例 入力は同じで、どちらも長さ 10000 のランダム配列で、各メソッドの実行時間が出力されます。これら 2 つのコード スニペットを複数回実行し、2 つの関数の平均実行時間を比較できます。

私がテストした環境では、2 つのメソッド間の時間の差は明らかではありません。通常、array_count_unique 関数は array_count_values 関数よりもわずかに高速ですが、その違いは2 つの方法の間の違いは重要ではありません。したがって、実際のアプリケーションでは、必要に応じて適切な方法を選択できます。

概要

この記事では、PHP を使用して配列内のさまざまな値を数える方法を紹介します。 PHP の組み込み array_count_values 関数を使用することも、自分で関数を作成することもできます。どちらの方法でも同様の機能を実現しますが、パフォーマンスはわずかに異なります。実際のアプリケーションでは、必要に応じて適切な方法を選択できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。