2010年5月20日

[PHP-users 35193]多次元配列からのデータ抽出について

増田と申します。お世話になっております。

以下のコードにより、変数$ep_remark_dataに全てデータをいれたのですが、
そこから、ある条件に適さないものは、$ep_remark_dataから除く(または新たな変数に入れる)ということをしたいと考えています。

$ep_remark_data = array();
foreach ($fo as $line) {
$ep_remark_data[] = array(

'ep_log_no' => $line[0],
'ep_log_live_no' => $line[1],
'ep_cmt_date' => $line[2],
'ep_user_id' => $line[3],
'ep_chara_id' => $line[4],
'ep_remark_flag' => $line[5],
'ep_remark_day' => $line[6],
'ep_remark_size' => $line[7],
'ep_remark_text' => $line[8],
);
} //end foreach

とりあえず、フィルタリングだろうと思い、array_filterを使い、以下のようなコードを書いたところ、目的のデータは得られました。

$filter = create_function('$ep_remark_data', 'return $ep_remark_data["ep_remark_flag"] == 9 && $ep_remark_data[ep_user_id]==1234;');
$filter_remark = array_filter($ep_remark_data, "filter");

ただ、$ep_remark_data[ep_user_id]==1234としているところで、1234ではなく、$idのように変数を使うとどうも目的の値が取れず、
うまくいきません。echo $id;として見る限り、正しい値を出していますが、スコープの関係か、うまくいかないのが現状です。

また、idが1234のみならず、5678のものも取得したいと考えた場合、再度「&& $ep_remark_data[ep_user_id]」
として条件を付け加えなければいけないかと思うとあまりスマートではないように思うのですが、何かよい方法はありますでしょうか?

一応配列ですので、
foreach($ep_remark_data as $ep_remark){
if($ep_remark['ep_remark_flag']==9){
$filter_remark=$ep_remark;
}
}
として、forearchも使って抽出してみたのですが、flagが9のものはいくつもあるのに一個しか取ってくれず、
これも思うように動いてくれません。

上記のコードはやはり問題ありますでしょうか?
もし、綺麗に抽出できる方法がありましたらご教授いただきたく思い、投稿させて頂きました。

拙い質問で申し訳ありませんが、宜しくお願い致します。


増田
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年5月20日 19:35
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95890
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。