2010-09-17 4 views
3

J'ai un tableau comme les suivantes:Comment convertir chaque deux valeurs consécutives d'un tableau en une paire clé/valeur?

array('category_name:', 'c1', 'types:', 't1') 

Je veux que les autres valeurs d'un tableau pour être les valeurs d'un tableau:

array('category_name:' => 'c1', 'types:' => 't1') 
+0

J'ai changé ma question – mayuri

+0

Vous avez posé neuf questions et n'en avez accepté aucune - savez-vous comment les marquer comme la solution choisie? – Jeriko

+0

non je ne sais pas, je suis nouveau à pile – mayuri

Répondre

1
function fold($a) { 
    return $a 
     ? array(array_shift($a) => array_shift($a)) 
      + fold($a) 
     : array(); 
} 

print_r(fold(range('a','p'))); 

~)

màj: une version réelle

function fold2($a) { 
    $r = array(); 
    for($n = 1; $n < count($a); $n += 2) 
     $r[$a[$n - 1]] = $a[$n]; 
    return $r; 
} 
+0

cela donne une gamme d'alphabets, je veux dans un seul tableau – mayuri

+0

je l'ai eu ... merci – mayuri

0
$array = your array; 
$newArray['category_name:'] = $array[1]; 
$newArray['types:'] = $array[3]; 
2

Vous pouvez essayer: (non testé)

$data = Array("category_name:","c1","types:","t1"); //your data goes here 
for($i=0, $output = Array(), $max=sizeof($data); $i<$max; $i+=2) { 
    $key = $data[$i]; 
    $value = $data[$i+1]; 
    $output[$key] = $value; 
} 

Autre possibilité: (non testé)

$output = Array(); 
foreach($data as $key => $value): 
    if($key % 2 > 0) { //every second item 
    $index = $data[$key-1]; 
    $output[$index] = $value; 
    } 
endforeach; 
+0

$ data = $ trans; // trans dans le tableau pour ($ i = 0, $ sortie = Array(), $ max = taille de ($ data); $ i <$ max; $ i + = 2) { $ clé = $ données [$ je]; $ value = $ data [$ i + 1]; $ output [$ key] = $ valeur; } print_r ($ data); – mayuri

+0

est-ce correct? Je suis nouveau à PHP s'il vous plaît aider – mayuri

+0

Cela devrait fonctionner correctement. Essayez 'var_dump ($ output)' et voyez ce qu'il vous donne. – Jeriko

1

Voici une autre solution encore complexe:

$keys = array_intersect_key($arr, array_flip(range(0, count($arr)-1, 2))); 
$values = array_intersect_key($arr, array_flip(range(1, count($arr)-1, 2))); 
$arr = array_combine($keys, $values); 
Questions connexes