2012-10-13 34 views
0

我有一个像下面这样的数组,其中数组键“period”下有一个数组,其中包含四个数组,其中您可以看到它打开关闭,打开关闭,我希望它是关闭打开,关闭打开,但每对数组(关闭打开&)仍然需要保留其父数组格式的顺序。我真的希望这是有道理的!我一直在这个问题上插了很久,但我似乎无法让它正确迭代并维持这个顺序。阵列中每个第一对阵列的翻转顺序

任何帮助将非常感激地收到。谢谢。

array(1) { 
    ["opening_hours"]=> 
    array(1) { 
    ["periods"]=> 
    array(12) { 
     [0]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "1" 
      ["time"]=> 
      string(4) "0730" 
     } 
     } 
     [1]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "1" 
      ["time"]=> 
      string(4) "1200" 
     } 
     } 
     [2]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "1" 
      ["time"]=> 
      string(4) "1600" 
     } 
     } 
     [3]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "1" 
      ["time"]=> 
      string(4) "2345" 
     } 
     } 
     [4]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "2" 
      ["time"]=> 
      string(4) "0745" 
     } 
     } 
     [5]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "2" 
      ["time"]=> 
      string(4) "1200" 
     } 
     } 
     [6]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "2" 
      ["time"]=> 
      string(4) "1600" 
     } 
     } 
     [7]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "2" 
      ["time"]=> 
      string(4) "2345" 
     } 
     } 
     [8]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "3" 
      ["time"]=> 
      string(4) "0800" 
     } 
     } 
     [9]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "3" 
      ["time"]=> 
      string(4) "1200" 
     } 
     } 
     [10]=> 
     array(1) { 
     ["open"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "3" 
      ["time"]=> 
      string(4) "1600" 
     } 
     } 
     [11]=> 
     array(1) { 
     ["close"]=> 
     array(2) { 
      ["day"]=> 
      string(1) "3" 
      ["time"]=> 
      string(4) "2345" 
     } 
     } 
    } 
    } 
} 
+0

是什么让他们这样的问题呢?无论如何,他们没有订购。 –

+0

你是认真的吗?如果一个接一个地出现,他们以某种形式的秩序是不是他们?至于他们以这种方式订购的问题是什么,那么,它只是为了我的目的!感谢您的输入,虽然.... – bjohnb

+0

还是不清楚。无论如何。 :) –

回答

0

我要相信你的阵列是这样

$array = array(
     "opening_hours" => array(
       "periods" => array(
         0 => array("open" => array("day" => "1","time" => "0730")), 
         1 => array("close" => array("day" => "1","time" => "1200")), 
         2 => array("open" => array("day" => "1","time" => "1600")), 
         3 => array("close" => array("day" => "1","time" => "2345")), 
         4 => array("open" => array("day" => "2","time" => "0745")), 
         5 => array("close" => array("day" => "2","time" => "1200")), 
         6 => array("open" => array("day" => "2","time" => "1600")), 
         7 => array("close" => array("day" => "2","time" => "2345")), 
         8 => array("open" => array("day" => "3","time" => "0800")), 
         9 => array("close" => array("day" => "3","time" => "1200")), 
         10 => array("open" => array("day" => "3","time" => "1600")), 
         11 => array("close" => array("day" => "3","time" => "2345"))))); 

交换位置

$final = array(); 
$total = count($array['opening_hours']['periods']); 

for($i = 0; $i < $total; $i += 2) { 

    if (isset($array['opening_hours']['periods'][$i + 1])) { 
     $final[] = $array['opening_hours']['periods'][$i + 1]; 
    } 

    $final[] = $array['opening_hours']['periods'][$i]; 
} 

var_dump($final); 

输出

array 
    0 => 
    array 
     'close' => 
     array 
      'day' => string '1' (length=1) 
      'time' => string '1200' (length=4) 
    1 => 
    array 
     'open' => 
     array 
      'day' => string '1' (length=1) 
      'time' => string '0730' (length=4) 
    2 => 
    array 
     'close' => 
     array 
      'day' => string '1' (length=1) 
      'time' => string '2345' (length=4) 
    3 => 
    array 
     'open' => 
     array 
      'day' => string '1' (length=1) 
      'time' => string '1600' (length=4) 
    4 => 
    array 
     'close' => 
     array 
      'day' => string '2' (length=1) 
      'time' => string '1200' (length=4) 
    5 => 
    array 
     'open' => 
     array 
      'day' => string '2' (length=1) 
      'time' => string '0745' (length=4) 
    6 => 
    array 
     'close' => 
     array 
      'day' => string '2' (length=1) 
      'time' => string '2345' (length=4) 
    7 => 
    array 
     'open' => 
     array 
      'day' => string '2' (length=1) 
      'time' => string '1600' (length=4) 
    8 => 
    array 
     'close' => 
     array 
      'day' => string '3' (length=1) 
      'time' => string '1200' (length=4) 
    9 => 
    array 
     'open' => 
     array 
      'day' => string '3' (length=1) 
      'time' => string '0800' (length=4) 
    10 => 
    array 
     'close' => 
     array 
      'day' => string '3' (length=1) 
      'time' => string '2345' (length=4) 
    11 => 
    array 
     'open' => 
     array 
      'day' => string '3' (length=1) 
      'time' => string '1600' (length=4) 
+0

谢谢巴巴,这对我来说很好,我会试一试!干杯!! – bjohnb

+0

@bjohnb欢迎您:) – Baba

+0

嘿巴巴,只是一件事,你的代码带走了我的父母数组[[开] [小时]] [周期]。我怎样才能使它仍然具有与刚开始时相同的数据结构? – bjohnb