2013-02-13 73 views
0

我有一個初始陣列:劃分多維數組

array 
([no] => array 
      (
      [<30] => 3 
      [>30] => 5 
      [>50] => 2 
     ) 
    [yes] => array 
      (
      [<30] => 4 
      [>30] => 2 
      [>50] => 7 
     ) 
    [maybe] => array 
      (
      [<30] => 7 
      [>30] => 9 
      [>50] => 10 
     ) 
) 

是否上述陣列可以由是被分成多個數組變量,沒有和也許。如:

$yes = array(3,5,2); 
$no = array(4,2,7); 
$maybe = array(7,9,10); 
+1

[你嘗試過什麼?](http://www.whathaveyoutried.com/)參見[問諮詢】(http://stackoverflow.com/questions/ask-advice),請。 – 2013-02-13 01:34:02

回答

1

你可以試試這個。

$result = array(); 

foreach($data as $response) 
    $result[] = array_values($response); 

list($no, $yes, $maybe) = $result; 

其中$data是在您的問題中顯示的數組。

然後,可以從$no$yes$maybe訪問3個值假定的$data順序是相應於該順序。

+0

它取決於原始數組中的鍵順序,它可以隨時間變化。 – 2013-02-13 01:46:56

+0

謝謝你真的幫我 – 2013-02-13 01:48:38

+0

@IvanNevostruev是的,我已經在我的答案中提到過。 – 2013-02-13 01:51:49

1
$yes = $array['yes']; 
$no = $array['no']; 
$maybe = $array['maybe']; 

這一切就是這麼簡單。

1

假定內陣列在相同的密鑰相同的訂單被填充,它看起來像你想看看array_values:http://php.net/manual/en/function.array-values.php

,並從,它應該是簡單的事:

$yes = array_values($initial_array['yes']); 
$no = array_values($initial_array['no']); 
$maybe = array_values($initial_array['maybe']); 
0

針對此問題給出的所有其他解決方案取決於密鑰的名稱,如果密鑰從yes更改爲YES,則此解決方案均不起作用,以下是其動態解決方案。

$array = array("yes"=>array(1,2,3,4),"no"=>array(3,45,6,),"maybe"=>array(7,8,9)); 

foreach($array as $key=>$val){ 
    $key  = strtolower($key); 
    $$key  = $val; 
} 

print_r($yes); 
echo "<br>"; 
print_r($no); 
echo "<br>"; 
print_r($maybe); 
+0

如果數據確實是動態的(例如由第三方服務提供),那麼如果他們將關鍵情況從「是」更改爲「是」並且您的變量是$是,那麼您的代碼仍然會中斷($ yes不是$ YES)。一些緩解措施是在創建命名局部變量「foreach($ array as $ key => $ val){$ key = strtolower($ key); $$ key = $ val;}」之前小寫這些鍵「 – 2013-02-15 01:03:34

+0

@TimothéeGroleau:感謝那。我編輯了代碼。 – 2013-02-15 04:31:50