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

PHPについて次のスクリプトを作成してください。

下記のような地名の配列$ttがあるとします。
$tt = array(
'関東東京都',
'九州博多県',
'関西大阪府',
'関東埼玉県',
'関西京都府',
'中部愛知県'
);


そのうち「関東」と「関西」で始まる要素を配列の後ろにするという
スクリプトを作成してください。
つまり下記のような順番の配列になると言うことです。

$tt = array(
'九州博多県',
'中部愛知県',
'関東東京都',
'関東埼玉県',
'関西大阪府',
'関西京都府'
);

「関東」「関西」以外の「九州博多県」「中部愛知県」が前にきます。
「関東」で始まる要素と「関西」で始まる要素が後ろにきます。

Vista、PHP5.2.6、XAMPP、Firefoxという環境でやってます。
よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:firefox PHP TT VISTA XAMPP
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント ベストアンサー
//
// コールバック関数
function p1($a) { return(preg_match('/^(関東|関西)/',$a)); }
function p2($a) { return(!preg_match('/^(関東|関西)/',$a)); }
//
// 変数
$tt = array(
'関東東京都',
'九州博多県',
'関西大阪府',
'関東埼玉県',
'関西京都府',
'中部愛知県'
);
//
// 処理
$tt = array_merge(array_filter($tt,'p2'), array_filter($tt,'p1'));
//
// 結果出力
print_r($tt);

ループで1つずつ判断しても良いかとは思ったのですが

関東/関西を含むものを抽出するp1と

含まないものを抽出するp2という関数を作っておいて

それぞれを呼び出した結果を結合するという方法を用いてみました。

ところで、博多県って・・・?

◎質問者からの返答

いつもご回答ありがとうございます。


>ループで1つずつ判断しても良いかとは思ったのですが

僕もそういうスクリプトをイメージしてました。

コールバック関数は僕にはまだ難しいかと思ってましたが、

こうやって見てみるとなんとかなりそうな気がしてきました。

勉強になりました。


>ところで、博多県って・・・?

福岡県の間違いです。はずかしいです。

知らなかった訳じゃなかったのですが、勢いで書いてしまいました。

とりあえず、うまくいったので早々に質問を終了します。

関連質問


●質問をもっと探す●



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