PHP開発では、特に配列が多次元配列である場合、アレイ内の要素をカウントする必要があることがよくあります。その値をカウントする方法は特に重要です。この記事では、多次元アレイの値統計をサポートするカスタムPHP関数を作成する方法を示します。
多次元配列は、その要素として1つ以上の配列を含む配列です。たとえば、2次元配列、その各要素は配列です。多次元配列を通過することにより、より複雑なデータ統計を実行できます。
たとえば、次のように多次元配列があるとします。
$array = [
['name' => 'John', 'age' => 28, 'city' => 'New York'],
['name' => 'Jane', 'age' => 22, 'city' => 'Los Angeles'],
['name' => 'Mike', 'age' => 28, 'city' => 'Chicago'],
['name' => 'Lucy', 'age' => 22, 'city' => 'New York']
];
私たちの目標は、各値が多次元配列全体に表示される回数をカウントできる関数を作成することです。多次元配列を再帰的に処理して、各要素の発生頻度をカウントできます。
この関数を実装するPHP関数は次のとおりです。
function countValuesInArray($array) {
$counts = [];
// 多次元配列を繰り返します
foreach ($array as $element) {
// 要素が配列の場合,次に、再帰的に呼び出します
if (is_array($element)) {
$counts = array_merge($counts, countValuesInArray($element));
} else {
// 要素が値の場合,次に、発生数を数えます
if (isset($counts[$element])) {
$counts[$element]++;
} else {
$counts[$element] = 1;
}
}
}
return $counts;
}
// テスト配列
$array = [
['name' => 'John', 'age' => 28, 'city' => 'New York'],
['name' => 'Jane', 'age' => 22, 'city' => 'Los Angeles'],
['name' => 'Mike', 'age' => 28, 'city' => 'Chicago'],
['name' => 'Lucy', 'age' => 22, 'city' => 'New York']
];
// 呼び出し関数
$result = countValuesInArray($array);
// 出力結果
echo '<pre>';
print_r($result);
echo '</pre>';
再帰トラバーサル
CountValuesInArray関数は、再帰を通じて多次元配列を処理します。配列自体の要素がアレイである場合、関数は再びそれ自体を呼び出して、最も内側の値に達するまでサブアレイを処理します。
統計要素周波数<BR> 各要素について、関数は$ countsアレイに既にカウントされているかどうかをチェックします。すでに存在する場合、その値は1増加します。存在しない場合は、1に初期化されます。
結果のマージ<br> 再帰的に呼び出すたびに、 Array_Mergeを介して統計結果をマージして、最終的に完全な統計アレイを形成します。
上記のコードを実行すると、出力は次のとおりです。
Array
(
[John] => 1
[28] => 2
[New York] => 2
[Jane] => 1
[22] => 2
[Los Angeles] => 1
[Mike] => 1
[Chicago] => 1
[Lucy] => 1
)
多くのPHPアプリケーションでは、配列データにはURLが含まれている場合があります。これを処理する必要があります。配列内のすべてのURLのドメイン名をM66.NETに置き換える場合は、上記の機能をわずかに変更し、URLのドメイン名を正規表現に置き換えることができます。
これが機能の変更されたバージョンです。URL処理が追加されています。