PHP ループを使用せずに配列から奇数要素と偶数要素を分離するにはどうすればよいですか?
PHP では、n 個の要素の配列を取得します。要素が奇数であるか偶数であるかに基づいて、配列から要素を分離する必要があります。つまり、元の配列をループしたりループを使用したりせずに、奇数配列と偶数配列を別々に出力します。
例:
输入: array(2, 5, 6, 3, 0) 输出: 奇数array: 5 , 3 偶数array: 2, 6, 0 输入: $input = array(0, 1, 2, 3, 4, 5) 输出: 奇数array: 1, 3, 5 偶数array: 0, 2, 4
この種の問題は、配列をループして奇数または個々の要素を出力することで簡単に解決できますが、これにはより多くのコード行とコードが必要になります。ループのオーバーヘッドが発生します。そこで、ループの使用を避けるために、PHP の組み込み関数をいくつか使用してみます。ここでは、2 つの PHP 配列関数 array_filter() と array_values() を使用して、この問題を解決します。
array_filter(): この関数は、入力配列内の奇数/偶数要素をフィルターするために使用されます。
array_values(): この関数は、array_filter の奇数配列と偶数配列の要素が入力配列内で持つインデックスと同じであるため、奇数配列と偶数配列のインデックスを再設定するために使用されます。
注: array_filter() 関数は、奇数/偶数のインデックス要素とそのインデックス値のみをフィルターします。 array_filter() 関数を適用すると、奇数配列のインデックスは 1、3、5 になり、偶数配列のインデックスは 0、2、4 になります。
アルゴリズム:
要素のフィルター :
array_filter() を通じて奇数の要素をフィルターします。
array_filter() を通じて偶数要素をフィルタリングします。
配列の再インデックス:
array_values() を使用して、奇数の配列のインデックスを再作成します。
array_values() を使用して偶数配列のインデックスを再作成します。
奇数/偶数配列を出力します。
#上記のアルゴリズムの PHP 実装は次のとおりです:
<?php $input = array(4, 3, 6, 5, 8, 7, 2); function oddCmp($input) { return ($input & 1); } function evenCmp($input) { return !($input & 1); } $odd = array_filter($input, "oddCmp"); $even = array_filter($input, "evenCmp"); $odd = array_values(array_filter($odd)); $even = array_values(array_filter($even)); print"奇数数组:\n"; print_r($odd); print"偶数数组:\n"; print_r($even); ?>
出力は次のとおりです:
以上がPHP配列で奇数と偶数を区切る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。