0

日がキーで、タイミングが値であるこの配列があります。

Array(

    [Mon] => 9:00-10:00,12:00-15:00,10:00-14:00

    [Tue] => 9:00-10:00,12:00-15:00

    [Wed] => 9:00-10:00,12:00-15:00

    [Thu] => 9:00-10:00,12:00-15:00

    [Fri] => 9:00-10:00,12:00-15:00

    [Sat] => 9:00-10:00,12:00-15:00

    [Sun] => 10:00-14:00

)

そして、私はこの方法で同じ配列が欲しい:

 Array(

    [Mon] => 9:00-10:00,12:00-15:00,10:00-14:00

    [Tue/Wed/Thu/Fri/Sat] => 9:00-10:00,12:00-15:00

    [Sun] => 10:00-14:00

)

誰でもこれについて私を助けることができますか?

4

5 に答える 5

1

これを達成するためのより良い方法があるかもしれませんが、次の方法でうまくいくはずです:-

$input = <YOUR ARRAY>
$output = array();

foreach ($input as $k => $v) {
  if (!isset($output[$v])) {
    $output[$v] = $k;
  } else {
    $output[$v] .= '/' . $k;
  }
}

print_r(array_flip($output));

これが実際の例です

于 2013-04-05T12:12:02.813 に答える
0

あなたの質問を再検討した後、私は次の解決策にforeach行き着きました. 次に、日を 1 つの文字列 (2 番目の foreach) に分割し、配列を反転します。

$output = array();

foreach ($input as $day => $time) $output[$time][] = $day;

foreach ($output as &$value) $value = implode('/', $value); 
unset ($value);

print_r(array_flip($output));

http://eval.in/14944

于 2013-04-05T12:40:02.517 に答える
0
$temp = array();
foreach ($array as $day => $value) {
    if (!in_array($value, $temp)) {
        $temp[] = $value;
        $result[implode("/",array_keys($array,$value))] = $value;
    }
}

デモを参照してください。

于 2013-04-05T12:13:11.330 に答える
0
$data = array(
    'Mon' => '9:00-10:00,12:00-15:00,10:00-14:00',
    'Tue' => '9:00-10:00,12:00-15:00',
    'Wed' => '9:00-10:00,12:00-15:00',
    'Thu' => '9:00-10:00,12:00-15:00',
    'Fri' => '9:00-10:00,12:00-15:00',
    'Sat' => '9:00-10:00,12:00-15:00',
    'Sun' => '10:00-14:00'
    );

$new_data = array();

foreach($data as $key => $value){
    $index = array_search($value, $new_data);
    if($index){
        $new_data[$index .'/' . $key] = $value;
        unset($new_data[$index]);
    }else{
        $new_data[$key] = $value;
    }
}

echo '<pre>';
var_dump($new_data);
echo '</pre>';
于 2013-04-05T12:14:30.510 に答える