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

PHP5の関数の質問です。

$a = array(
[0] =>array([text01]=>'aaa', [data]=>'モルトの試飲会。ふるってご応募ください。')
[1] =>array([text01]=>'bbb', [data]=>'パーティーなどいかが?カクテル飲み放題です。')
[2] =>array([text01]=>'ccc', [data]=>'ジムマッキュワンが来日。ワインのセミナーも兼。')
[3] =>array([text01]=>'ddd', [data]=>'ところてんは好きですか?私は嫌いです。')
[4] =>array([text01]=>'eee', [data]=>'今度ピクニックのイベントを組みます')
[5] =>array([text01]=>'fff', [data]=>'仮装パーティーのお知らせ。')
);

以上の配列を、コメント記述にある処理をやらせたいのですが関数がわかりません。
500文字に収まらなかったのでコメントに記述しています。
よろしくお願いします。

●質問者: seadwell
●カテゴリ:インターネット ウェブ制作
✍キーワード:AAA CCC ddd FFF ところてん
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GoldenDawn
●35ポイント ベストアンサー

こんな感じでどうでしょうか。文字セットは UTF-8 で。

<?php
$a = array(
 0 =>array('text01'=>'aaa', 'data'=>'モルトの試飲会。ふるってご応募ください。'),
 1 =>array('text01'=>'bbb', 'data'=>'パーティーなどいかが?カクテル飲み放題です。'),
 2 =>array('text01'=>'ccc', 'data'=>'ジムマッキュワンが来日。ワインのセミナーも兼。'),
 3 =>array('text01'=>'ddd', 'data'=>'ところてんは好きですか?私は嫌いです。'),
 4 =>array('text01'=>'eee', 'data'=>'今度ピクニックのイベントを組みます'),
 5 =>array('text01'=>'fff', 'data'=>'仮装パーティーのお知らせ。')
) ;

function filter($a, $s1, $s2) {
 return array_values(array_filter($a, create_function(
 '$e', "return !preg_match('/$s1|$s2/u', \$e['data']) ;"
 ))) ;
}

echo '<pre>' ;
print_r(array_slice(filter($a, 'モルト', 'ワイン'), 0, 3)) ;
print_r(filter($a, 'パーティー', 'ワイン')) ;
echo '</pre>' ;
?>
◎質問者からの返答

てっきり、foreach を使ってその中で処理させると思ってましたが・・・。

初めて見た関数も沢山あります。

解読に時間がかかりそうです^^;


2 ● tezcello
●35ポイント

一度にやらせるのではなく、普通にプログラムを組んだらどうですか?

// 結果配列
$b = array();
$c = array();

foreach($a as $src){ // $a でループ
 // 条件に合致するもののみ、結果配列に追加する
 // $b
 if (($count($b) < 3) and !preg_match('/(モルト|ワイン)/u', $src['data']) $b[] = $src;

 // $c
 if (preg_match('/(パーティ|ワイン)/u', $src['data']) $c = $src;
}

スクリプトはUTF-8で書いてくださいね。

動作チェックしてません。

◎質問者からの返答

やっとできました。preg_matchの/uが何のため付いているのか?調べるのに時間がかかりました。

GoldenDawn さんのアイデアも頂き、動作確認しましたありがとうございます。

関連質問


●質問をもっと探す●



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