ホームページ >バックエンド開発 >PHPチュートリアル >PHPは配列からnull値を削除します

PHPは配列からnull値を削除します

WBOY
WBOYオリジナル
2016-07-25 08:53:361172ブラウズ
  1. foreach( $arr as $k=>$v){
  2. if( !$v )
  3. unset( $arr[$k] );
  4. ?>
コードをコピーします
これはかなり良いと思いますが、あまり効率的ではありません。最初に $arr をオブジェクトに変換し、次にオブジェクトの特性を使用して削除します。 : foreach は現在の操作です。foreach が操作されるたびに、変数がコピーされます。ページ内に foreach が多すぎると、大量のデータが消費されます。

インターネットを徘徊しているときに、array_filter の使用を提案している人を見て驚きました。 説明書を開いて見てみると、宝の山を守っていたが使い方が分からなかった。 array_filter関数の機能は、コールバック関数を使用して配列をフィルタリングすることです。私はいつもコールバック関数を使用してそれを処理できると思っていましたが、PHPのマニュアルにある文を見つけませんでした。コールバック関数がない場合、デフォルトでは、配列内の false 値を持つ項目が削除されます。

  1. $entry = array(

  2. 0 => 'foo',
  3. 1 => false,
  4. 2 => -1,
  5. 3 => null,
  6. 4 => ''
  7. );

  8. print_r(array_filter($entry));

  9. ?

出力価値: 配列 ( [0] => フー [2] => -1 ) 今後もマニュアルをもっと読む必要がありそうです...array_slice と同じように、これも良いことです。残念ながら今まで気付かなかったです。 別紙:別の例

$strDelCodes = "A;B;;C;;C;D;;;D;D";
$rsArray = array_values (array_unique (array_diff (split ("; ", $strDelCodes), array (""))));
  1. コードをコピー
配列 $rsArray に格納される値は次のとおりです: A B C D array_values() 関数は、指定された配列内のすべてのキー値を含む配列を返しますが、キー名は保持しません。 array_diff() 関数は、2 つの配列の差分の配列を返します。この配列には、比較対象の配列内にあるが、他の引数配列には含まれていないすべてのキーが含まれます。 array_unique() 関数は、配列から重複した値を削除し、結果の配列を返します。複数の配列要素の値が等しい場合、最初の要素のみが保持され、他の要素は削除されます。 返された配列内のキー名は変更されません。 array_merge() 関数は、2 つ以上の配列を 1 つの配列にマージします。 重複したキー名がある場合、そのキーのキー値は最後のキー名に対応する値になります (後のキー名が前のキー名を上書きします)。配列が数値的にインデックス付けされている場合、キー名は連続して再インデックス付けされます。

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