人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの配列操作に関する質問です。

以下のような配列があった場合に、
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
)
)

●質問者: 雨の日
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pogpi
●50ポイント

in_array('number',$hoge)で、$hogeにnumberがあるか分かります。
新たに配列を作って、numberがあれば追加して、元の配列に置き換えればできますね。


2 ● a-kuma3
●50ポイント ベストアンサー

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


a-kuma3さんのコメント
おっと、補足に答える前に閉まっちゃいましたか。 >> もう1点知りたいのが、仮にnumberが数値の場合にnumberが5以上の配列で作りなおすという場合はどのようにすればよいのでしょうか? << 自分で答えにたどり着いたのだとは想像しますが、一応、念のため。 array_filter に渡す callback 関数の中身を変えるだけで対応できます。 >|php| <?php ... function filter_number_over5($i) { return $i['number'] >= 5; // ★ココ! } $a = array_filter($a, filter_number_over5); ?> ||< # 気持ち悪いんで、関数名も変えましたが。

雨の日さんのコメント
ご返信遅くなりまして申し訳ございません。 サンプルソースまでありがとうございました。 ご推測の通り自力で解決出来ました。 ご丁寧にありがとうございました。

質問者から

ご回答ありがとうございます。
基本的に配列を作り直すという考え方をすればよいことがわかりました。
もう1点知りたいのが、仮にnumberが数値の場合にnumberが5以上の配列で作りなおすという場合はどのようにすればよいのでしょうか?


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ