2011-01-11 3 views
1

comment prendre chaîne de tableau définissent comme nouveau tableau, comment coder en phpphp comme variable tableau

$column = array("id","name","value"); 

disons trouvé 3 rangs de MySQL

veulent-résultat à être comme ça

$id[0] = "1"; 
$id[1] = "6"; 
$id[2] = "10"; 

$name[0] = "a"; 
$name[1] = "b"; 
$name[2] = "c"; 

$value[0] = "bat"; 
$value[1] = "rat"; 
$value[2] = "cat"; 

Je veux prendre chaîne de tableau $column définir comme nouveau tableau.

comment le coder? ou si ma question est stupide, mon s'il vous plaît d'avoir une suggestion.

merci.

Répondre

1

réponse J'ai fait sur votre question précédente:

$result = mysql_query($sql); 
$num = mysql_num_rows($result); 
$i = 0; 

if ($num > 0) { 
    while ($row = mysql_fetch_assoc($result)) { 
    foreach($row as $column_name => $column_value) { 
     $temp_array[$column_name][$i] = $column_value; 
    } 
    $i++; 
    } 

    foreach ($temp_array as $name => $answer) { 
    $$name = $answer; 
    } 
} 
1

Je ne vois pas pourquoi vous voudriez modéliser vos données comme ça, vous demandez un monde de mal en termes de débogage. Il y a des "variables variables", vous pouvez utiliser pour définir cela, ou de construire des variables globales dynamiquement en utilisant $ GLOBALS:

$somevar = "hello" 
$$somevar[0] = "first index"; // creates $hello[0] 

$GLOBALS[$somevar][0] = "first index"; // creates $hello[0] in global scope 
1

essayer

$array = array(); 
foreach ($results as $r){ 
    foreach ($column as $col){ 
     $array[$col][] = $r[$col]; 
    } 
} 

extract ($array); 

ou vous pouvez simplement faire

$id = array(); 
$name = array(); 
$value = array(); 

foreach ($results as $r){ 
    $id[] = $r['id']; // or $r[0]; 
    $name[] = $r['name']; 
    $value[] = $r['value']; 
} 

J'espère que c'est ce que vous avez demandé

0

Ceci est assez dangereux, car il peut remplacer les variables que vous consi der safe dans votre code. Qu'est-ce que vous cherchez est extract:

$result = array(); 

while ($row = mysql_fetch_array($result)) 
    foreach ($column as $i => $c) 
    $result[$c][] = $row[$i]; 

extract($result); 

Donc, si $result était array('a' => array(1,2), 'b' => array(3,4)), la dernière ligne définit les variables $a = array(1,2) et $b = array(3,4).

0

Vous ne pouvez pas utiliser de variables variables pour cela, et vous ne devriez pas le faire. Mais voici comment vous pouvez le faire:

foreach (mysql_fetch_something() as $row) { 
    foreach ($row as $key=>$value) { 
     $results[$key][] = $value; 
    } 
} 

extract($results); 

Idéalement, vous sauterait le extract, et utiliser $results['id'][1] etc. Mais si vous extrayez seulement() le tableau imbriqué dans les sous-fonctions, la pollution de portée variable locale est acceptable.

0

Il n'y a pas besoin de tableaux ou d'utiliser _globals $, je crois que la meilleure façon de créer des variables nommées en fonction d'une autre valeur de la variable utilise des accolades:

$variable_name="value"; 

${$variable_name}="3"; 

echo $value; 

//Outputs 3 

Si vous êtes plus précis sur ce qui est le tableau que vous recevez je peux donner une solution plus complète, même si je dois vous avertir que je ne l'ai jamais eu à utiliser cette méthode et il est probablement un signe d'une mauvaise idée.

Si vous voulez en savoir plus à ce sujet, voici un lien utile: http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/