array_count_valuesは、配列内のすべての値の発生数をカウントするPHPの非常に実用的な機能です。この関数は、配列のキーが元の配列の値である連想配列を返し、配列の値はこれらの値が元の配列に表示される回数です。
ただし、 array_count_valuesを使用する場合、ブール値(真およびfalse )とnullが統計に表示されないことがある場合があります。なぜこれがなぜですか?今日それを分析しましょう。
まず、 array_count_values関数の基本的な使用法を確認しましょう。この関数は、アレイを引数として受け取り、新しい配列を返し、配列内の各要素の発生数をカウントします。例えば:
$arr = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'];
$result = array_count_values($arr);
print_r($result);
出力は次のとおりです。
Array
(
[apple] => 2
[banana] => 3
[orange] => 1
)
次に、ブールとヌルが無視される理由を分析します。
PHPでは、ブール値真およびfalseは整数値1および0に変換され、 array_count_values関数では、ブール値は同じ値と見なされます。具体的には、 true and falseは同じ1および0として扱われ、 Array_count_valuesが配列を処理するときにそれらをマージします。したがって、配列に複数のブール値がある場合、それらの発生は、ブール値を個別にカウントするのではなく、対応する整数値にマージされます。
$arr = [true, false, true, 1, 0];
$result = array_count_values($arr);
print_r($result);
出力は次のとおりです。
Array
(
[1] => 3
[0] => 2
)
Trueと1が1にマージされ、 Falseと0が0にマージされることがわかります。そのため、ブール値は個別にカウントされません。
NULL値の場合、PHPには配列を処理する際にも特別な動作があります。 array_count_valuesを使用すると、通常はPHPで「null」と見なされるため、 nullは無視されます。 nullの発生数を数える必要がある場合は、最初に別の値に変換するか、他の方法で処理することを検討できます。
たとえば、次のコードを検討してください。
$arr = [NULL, 'apple', NULL, 'banana', 'apple'];
$result = array_count_values($arr);
print_r($result);
出力は次のとおりです。
Array
(
[apple] => 2
[banana] => 1
)
ご覧のとおり、 Nullは結果に表示されません。この問題を解決するために、 Array_count_valuesを呼び出す前にすべてのnull値を「null」などの特定の値に置き換えてから、統計を実行できます。
$arr = [NULL, 'apple', NULL, 'banana', 'apple'];
$arr = array_map(function($value) {
return $value === NULL ? 'NULL' : $value;
}, $arr);
$result = array_count_values($arr);
print_r($result);
出力は次のとおりです。
Array
(
[NULL] => 2
[apple] => 2
[banana] => 1
)
このようにして、述べるときにnull値を含めることができます。
array_count_valuesは、配列内の各値の発生数を数えるための非常に便利な機能です。ただし、PHPのブール値とヌル値は、処理時に特別な変換と無知の行動を持っているため、個別にカウントされるわけではありません。これらの特別なケースに対処する必要がある場合は、 array_count_valuesを呼び出す前にこれらの値を手動で置き換えるか、変換を入力してそれらを正しくカウントできることを確認できます。
最終コンテンツ: