-
- foreach( $arr as $k=>$v){
- if( !$v )
- unset( $arr[$k] );
- ?>
-
-
コードをコピーします
これはかなり良いと思いますが、あまり効率的ではありません。最初に $arr をオブジェクトに変換し、次にオブジェクトの特性を使用して削除します。 : foreach は現在の操作です。foreach が操作されるたびに、変数がコピーされます。ページ内に foreach が多すぎると、大量のデータが消費されます。
インターネットを徘徊しているときに、array_filter の使用を提案している人を見て驚きました。
説明書を開いて見てみると、宝の山を守っていたが使い方が分からなかった。
array_filter関数の機能は、コールバック関数を使用して配列をフィルタリングすることです。私はいつもコールバック関数を使用してそれを処理できると思っていましたが、PHPのマニュアルにある文を見つけませんでした。コールバック関数がない場合、デフォルトでは、配列内の false 値を持つ項目が削除されます。
-
$entry = array( - 0 => 'foo',
- 1 => false,
- 2 => -1,
- 3 => null,
- 4 => ''
- );
print_r(array_filter($entry));
- ?
-
-
出力価値:
配列
(
[0] => フー
[2] => -1
)
今後もマニュアルをもっと読む必要がありそうです...array_slice と同じように、これも良いことです。残念ながら今まで気付かなかったです。
別紙:別の例
$strDelCodes = "A;B;;C;;C;D;;;D;D";$rsArray = array_values (array_unique (array_diff (split ("; ", $strDelCodes), array ("")))); -
-
- コードをコピー
-
-
配列 $rsArray に格納される値は次のとおりです: A B C D
array_values() 関数は、指定された配列内のすべてのキー値を含む配列を返しますが、キー名は保持しません。
array_diff() 関数は、2 つの配列の差分の配列を返します。この配列には、比較対象の配列内にあるが、他の引数配列には含まれていないすべてのキーが含まれます。
array_unique() 関数は、配列から重複した値を削除し、結果の配列を返します。複数の配列要素の値が等しい場合、最初の要素のみが保持され、他の要素は削除されます。
返された配列内のキー名は変更されません。
array_merge() 関数は、2 つ以上の配列を 1 つの配列にマージします。
重複したキー名がある場合、そのキーのキー値は最後のキー名に対応する値になります (後のキー名が前のキー名を上書きします)。配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。
|