2013-02-13 100 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