2010-07-19 2 views
3

quelle est la façon la plus simple de changer ce tableau en tableau 1D, je peux le faire en utilisant pour loop ou foreach, mais je suis curieux de vérifier s'il y a un façon. MERCIquelle est la façon la plus simple de changer ce tableau en tableau 1D

Array 
(
    [0] => Array 
     (
      [id] => 1 
     ) 

    [1] => Array 
     (
      [id] => 2 
     ) 

    [2] => Array 
     (
      [id] => 3 
     ) 
) 
+1

À quoi devrait ressembler le tableau résultant? –

Répondre

2
$output_ar = array_map('array_shift', $input_ar); 

La fonction array_shift() saisit la première paire de clé/val sur un tableau et renvoie la valeur, donc de l'appliquer à chacun des réseaux dans le réseau de niveau supérieur, et en combinant les résultats, résultera en une liste 1-d de l'ID. Si vos tableaux contiennent réellement plus d'informations que le champ id, alors vous voudrez probablement définir une fonction qui extrait spécifiquement le (s) champ (s) souhaité (s) et les retourne, puis utiliser fonctionne avec array_map.

+0

Cela ne fonctionne pas pour moi, renvoie juste des entrées de tableau vides. – Psytronic

+0

Apparemment 'next()' se comporte étrangement dans 'array_map()'. Je l'ai changé à 'array_shift()' à la place, ce que j'ai vérifié fonctionne. – Amber

+0

qui a fonctionné parfait pour moi: P merci mon pote .. que ce que je cherchais: P – trrrrrrm

0

Cela va récupérer toutes les valeurs et les placer dans un nouveau tableau.

// Initializing the Array 
$arr0 ['id'] = 1; 
$arr1 ['id'] = 2; 
$arr2 ['id'] = 3; 

$arr[0] = $arr0; 
$arr[1] = $arr1; 
$arr[2] = $arr2; 


// Processing 
$resultarray = array(); 
for ($i = 0; $i < count($arr); $i++){ 
    $resultarray = array_merge(array_values($arr[$i]),$resultarray); 
} 

// Test Output 
print_r ($resultarray); 
2

tableau de marche changera le tableau original, donc si vous avez besoin d'un tableau séparé, copiez d'abord, ou choisir une autre méthode.

function reducer($e, $i, $p){ 
    $e = $e[$p]; 
} 

array_walk($array, 'reducer', "id"); 

Cette fonction est réutilisable cependant, que vous pouvez changer « id » à une autre clé, ou une valeur numérique (je crois) et il fera la même chose sur ce tableau.

+0

'array_map' est un équivalent proche de' array_walk', sauf qu'il renvoie un nouveau tableau au lieu de modifier l'original sur place. – Amber

+0

Ce n'est pas le cas, array_map accepte plusieurs entrées de tableau, et le callback les utilisera comme paramètres, vous ne pouvez pas définir de valeur personnalisée comme dans array_walk. Eh bien, c'est comme ça que je lis la documentation de toute façon. :) – Psytronic

Questions connexes