2014-01-23 173 views
0

我有这样的阵列($originalArray):PHP - 转换数组多维

Array ( 
    [c] => 1 
    [d] => 2 
    [e] => 1 
    [a] => 1 
) 

,并想将它转化成/创建另一个多维它看起来像:

Array ( 
    [0] => Array ([name] => a [status] => 1) 
    [1] => Array ([name] => c [status] => 1) 
    [2] => Array ([name] => d [status] => 2) 
    [3] => Array ([name] => e [status] => 1) 
) 

像这样的东西我在想:

$new_array = array(); 
foreach ($originalArray as $key=>$val) 
    { 
    $new_array[] = array('name'=>$originalArray[$val],'status'=>$originalArray[$key]); 
} 
+0

$ originalArray [$ val]完全错误。你不能使用你的值作为键... $ val是ALREADY的值。 –

+0

Marc B - 您可以使用自己的键作为值。 – FartMachine4U

+0

是的,但只有当这些键实际存在于数组中时才有效。上面的代码是毫无意义的,除非数组的构建使得所有键=值。 –

回答

1

它比这更简单:

$new_array[] = array("name" => $key, "status" => $val); 
1

尝试:

$input = array('c' => 1, 'd' => 2, 'e' => 1, 'a' => 1); 
$output = array(); 

foreach ($input as $name => $status) { 
    $output[] = array(
    'name' => $name, 
    'status' => $status 
); 
} 
1

你的逻辑是正确的。可以通过使用从循环中获得的$ key,$ value变量来减少代码。

$new_array = array(); 
foreach ($originalArray as $key=>$val) 
{ 
    $new_array[] = array('name'=>$val,'status'=>$key); 
}