以下のような配列があった場合に、
Array(
[0] => Array(
[title] => メロン
[number] => 0001
)
[1] => Array(
[title] => りんご
[number] =>
)
[2] => Array(
[title] => ぶどう
[number] => 0002
)
)
キー[number]が空のものを削除するにはどのような方法があるでしょうか?
上記例でいうと以下のようになるのが理想です。
Array(
[0] => Array(
[title] => メロン
[number] => 0001
)
[1] => Array(
[title] => ぶどう
[number] => 0002
)
)
array_filter() を使う感じでしょうか。
<?php $a = array( array('title' => 'メロン', 'number' => 1), array('title' => 'りんご'), array('title' => 'ぶどう', 'number' => 2) ); print_r($a); // ★number が空の配列をフィルタリングする function filter_empty_number($i) { return ! empty($i['number']); } $a = array_filter($a, filter_empty_number); print_r($a); ?>
無名関数を使うと、こんな感じに。
<?php ... // ★number が空の配列をフィルタリングする $a = array_filter($a, function($i) { return ! empty($i['number']); } ); print_r($a); ?>
array_filter() のマニュアルは、こちら。
http://php.net/manual/ja/function.array-filter.php
in_array('number',$hoge)で、$hogeにnumberがあるか分かります。
新たに配列を作って、numberがあれば追加して、元の配列に置き換えればできますね。
array_filter() を使う感じでしょうか。
<?php $a = array( array('title' => 'メロン', 'number' => 1), array('title' => 'りんご'), array('title' => 'ぶどう', 'number' => 2) ); print_r($a); // ★number が空の配列をフィルタリングする function filter_empty_number($i) { return ! empty($i['number']); } $a = array_filter($a, filter_empty_number); print_r($a); ?>
無名関数を使うと、こんな感じに。
<?php ... // ★number が空の配列をフィルタリングする $a = array_filter($a, function($i) { return ! empty($i['number']); } ); print_r($a); ?>
array_filter() のマニュアルは、こちら。
http://php.net/manual/ja/function.array-filter.php
おっと、補足に答える前に閉まっちゃいましたか。
もう1点知りたいのが、仮にnumberが数値の場合にnumberが5以上の配列で作りなおすという場合はどのようにすればよいのでしょうか?
自分で答えにたどり着いたのだとは想像しますが、一応、念のため。
array_filter に渡す callback 関数の中身を変えるだけで対応できます。
<?php ... function filter_number_over5($i) { return $i['number'] >= 5; // ★ココ! } $a = array_filter($a, filter_number_over5); ?>
# 気持ち悪いんで、関数名も変えましたが。
ご返信遅くなりまして申し訳ございません。
サンプルソースまでありがとうございました。
ご推測の通り自力で解決出来ました。
ご丁寧にありがとうございました。
おっと、補足に答える前に閉まっちゃいましたか。
自分で答えにたどり着いたのだとは想像しますが、一応、念のため。
array_filter に渡す callback 関数の中身を変えるだけで対応できます。
# 気持ち悪いんで、関数名も変えましたが。
2014/07/25 22:28:21ご返信遅くなりまして申し訳ございません。
2014/07/30 22:43:33サンプルソースまでありがとうございました。
ご推測の通り自力で解決出来ました。
ご丁寧にありがとうございました。