配列に複数の都道府県の名前が入っていたとします。
その中で何番目かはわからないのですが、「東京」という文字があった場合、
その前の要素がすべて削除されるというスクリプトを作成してください。
ただし、各都道府県はダブらないという前提でお願いします。
たとえば、下記のような配列の場合、
$ken = array('北海道', '沖縄', '大阪', '東京', '愛知', '広島', '宮崎', '兵庫') ;
次のようになるということです。
$ken = array('東京', '愛知', '広島', '宮崎', '兵庫') ;
Vista,PHP5,XAMPP,Firefoxという環境でやっています。
以上、よろしくお願いします。
<?php function cut_prev($ndl, $list) { do if ($list[0] == $ndl) break ; while (array_shift($list)) ; return $list ; } $ken = array('北海道', '沖縄', '大阪', '東京', '愛知', '広島', '宮崎', '兵庫') ; print_r(cut_prev('東京', $ken)) ; ?>
こんなんでどうでしょうか?
(当方:Mac OS X 10.5.5 PHP 5.2.6)
<?php // 広島が二つあります。 $kens = array('北海道', '沖縄', '大阪', '東京', '愛知', '広島', '宮崎', '広島', '兵庫') ; // 東京以前を unset $is_unset = true; foreach ($kens as $k => $ken) { if ($ken == '東京') $is_unset = false; if ($is_unset) unset($kens[$k]); } // 重複した値を削除 $kens = array_unique($kens); // 結果を出力 print_r($kens); ?>
結果
Array ( [3] => 東京 [4] => 愛知 [5] => 広島 [6] => 宮崎 [8] => 兵庫 )
ご回答ありがとうございます。
質問にはダブらないとしておきましたが、
それに対応していた方がより便利ですね。
ご配慮ありがとうございます。
ご回答ありがとうございます。
何度もお答えいただいてすみません。
助かりました。