2009-11-20 5 views

Répondre

0

conversion relativement simple en boucle:

$newArray = array() 
foreach ($arr as $a) { 
    foreach ($a as $key => $value) { 
     $newArray[] = $value; 
    } 
} 

Ou, peut-être plus élégante:

function flatten($concatenation, $subArray) { 
    return array_merge($concatenation, array_values($subArray)); 
} 
$newArray = array_reduce($arr, "flatten", array()); 

Jean La solution est également sympa.

+0

Y at-il une fonction intégrée pour faire ce genre de travail? – Mask

+0

Je crois qu'il n'y a pas de fonction intégrée pour faire exactement cela. –

+0

@Mask, Pas avec les tableaux associatifs. Sinon, vous pouvez créer un nouveau tableau en utilisant l'une de plusieurs fonctions ou l'opérateur "+" pour créer une Union des tableaux. – Thomas

1
$output = array(); 
foreach ($arr as $array_piece) { 
    $output = array_merge($output, $array_piece); 
} 
return array_values($output); 

D'autre part, si vous voulez que la première valeur de chaque tableau, ce que vous voulez est ...

$output = array(); 
foreach ($arr as $array_piece) { 
    $output[] = array_unshift($array_piece); 
} 

Mais je pense que vous voulez que le premier.

0

Quelque chose comme cela devrait fonctionner

<? 
$arr = array(array('key1'=>'A','key2'=>'B'),array('key1'=>'C','key2'=>'D')); 

$new_array = array(); 

foreach ($arr as $key => $value) { 
    $new_array = array_merge($new_array, array_values($value)); 
} 

var_export($new_array); 
?> 

Si vous voulez que toutes les valeurs de chaque tableau dans votre tableau principal.

0
function collapse($input) { 
    $buf = array(); 
    if(is_array($input)) { 
     foreach($input as $i) $buf = array_merge($buf, collapse($i)); 
    } 
    else $buf[] = $input; 
    return $buf; 
} 

Au-dessus est une fonction unsplat modifiée, qui pourrait également être utilisé:

function unsplat($input, $delim="\t") { 
    $buf = array(); 
    if(is_array($input)) { 
     foreach($input as $i) $buf[] = unsplat($i, $delim); 
    } 
    else $buf[] = $input; 
    return implode($delim, $buf); 
} 
$newarray = explode("\0", unsplat($oldarray, "\0")); 
Questions connexes