2012-03-28 6 views
0

Ich versuche, ein Array zu erstellen, die so etwas wie diesesDeklarieren mehrdimensionales Array für mysql_fetch_assoc

array(
    [Matt => 3], 
    [Tom => 7]), 
    //etc 
) 

folgen werde ich dies so einrichten will ich es mit einem mysql_fetch_assoc verwenden können() wie

$i=0; 
    while($data = mysql_fetch_assoc($query)){ 

     $Array[$i] = $data['name']; // sore name as part of array 
     $Array[$i][0] = ($data['number']; // keep number with the name. 
     $i++; 

    } 

Dies funktioniert nicht. Ich konnte dies nicht mit einem array_push tun. Kann mir bitte jemand Anleitung geben? Ist meine Array-Deklaration falsch oder sogar wichtig?

Antwort

2
while($data = mysql_fetch_assoc($query)){ 
    $Array[$data['name']] = $data['number']; // keep number with the name. 
} 

produzieren, die keine doppelten Namen übernimmt - was nicht Sinn der Sache sein könnte, und ich habe Ihre Frage falsch verstanden ..

.

alternativ

while($data = mysql_fetch_assoc($query)){ 
    $Array[] = array($data['name'] => $data['number']); // keep number with the name. 
} 

Letzteres ist etwas, was Sie mit pdo fetchAll (PDO :: FETCH_ASSOC) tun können; see here

+0

'PDOStatement :: fetchAll()' wird nicht ein assoziatives Array wie das erzeugen, aber ich denke, Ihr zweites Beispiel ist wahrscheinlich, was das OP will. +1 – Phil

+0

@Phil PDO wird, wenn Sie das PDO :: FETCH_ASSOC const verwenden. Bei fetchAll erhalten Sie ein numerisch indiziertes Array von Tupeln, das ein assoziatives Array der Felder und ihrer Werte enthält. –

+0

Ja, aber es wird dir nicht "Matt => 3" geben. Es wird dir geben name => Matt, number => 3' – Phil

0

Ich kann nicht genau sagen, was Sie wollen, aber hilft das?

$array = array(); 
while ($data = mysql_fetch_assoc($query)) { 
    $array[$data['name']] = $data['number']; 
} 

Dies wird ein Array wie folgt aus (print_r Stil)

Array 
(
    [Matt] => 3, 
    [Tom] => 7 
) 
+0

Perfekt! Danke Phil! – mattyd