0

これは私の配列です。

特定の日付を見つけて、そのキー全体を配列から削除しようとしています (対応する start_time と end_time.

    $c = array
    // Search all end_times        
    $remove = '2012-06-24 17:00:59';

配列(2) {

[ 0 ]=>
配列(2) {

[ 0 ]=>
配列(2) {

["ID"]=> 文字列(2) "15"
["開始時間"]=> 文字列(19) "2012-06-24 08:00:00"

}

[ 1 ]=>
配列(2) {

["ID"]=> 文字列(2) "15"
["終了時間"]=> 文字列(19) "2012-06-24 17:00:59"

}

}

[ 1 ]=>
配列(2) {

[ 0 ]=>
配列(2) {

["ID"]=> 文字列(2) "28"
["開始時間"]=> 文字列(19) "2012-07-26 18:00:00"

}

[ 1 ]=>
配列(2) {

["ID"]=> 文字列(2) "28"
["終了時間"]=> 文字列(19) "2012-07-26 22:00:59"

}

}

}

これは私がこれまでに持っているコードです。最初の start_time または 2 番目の end_time をターゲットにしている場合にのみ機能します。これは、カウントがどこかで失われていることを示唆しています。私はPHPにかなり慣れていないので、次に何が起こるかについてはほとんど手がかりがありません.

   // recursive array search, look for value, remove key
   for ($i = 0, $count = count($c); $i < $count; $i++) {
       if ($c[$i][$i]['end_time'] == $remove) {
           unset($c[$i]);
   } 
   }

これについて何か助けていただければ幸いです!
よろしく

4

1 に答える 1

1
foreach ($c as $k=>$v) {
   foreach ($v as $line) {
      $times = array('start_time', 'end_time');
      foreach ($times as $time) {
         if ($line[$time] == $remove) {
            unset($c[$k]);
         }
      }
   }
}

私が正しく理解していれば、あなたが探していることをするべきです。

編集:基本的には、元の配列の各メンバーを取得し、その親配列の各メンバーを検索して削除時間を検索します。見つかった場合は、「ツリー」全体を削除します。

于 2012-07-26T01:00:20.470 に答える