2011-01-11 9 views
1

でPHPでPHPの文字列名配列

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

レットをコーディングする方法を新しい配列、 は、MySQL

から見つかった3行はこのようになりなりたいと言うように定義配列から文字列を取る方法

$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"; 

文字列を$columnから新しい配列として配列したいと考えています。

どのようにコードするのですか? または私の質問が愚かな場合は、私に提案をお願いします。

ありがとうございました。

答えて

1

回答:

$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

なぜこのようなデータをモデル化したいのかわかりませんが、デバッグの面では怪我をすることがあります。

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

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

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

extract ($array); 

を試すか、あなたは、単にこの

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

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

を行うことができます。「変数変数は、」あなたはこれを定義するために使用し、または動的に$ GLOBALSを使用してグローバル変数を構築することができありますあなたが尋ねたことが欲しいと思っていますか?

0

これはあなたが考える変数を上書きする可能性があるため、これはかなり危険ですあなたのコードでは安全です。あなたが探していることはextractです:$resultarray('a' => array(1,2), 'b' => array(3,4))だったのであれば

$result = array(); 

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

extract($result); 

、最後の行は、変数$a = array(1,2)$b = array(3,4)を定義します。

0

このために変数変数を使用することはできません。そうしてはいけません。しかし、これは、あなたがそれを行うことができる方法である:

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

extract($results); 

は、理想的には extractをスキップし、 $results['id'][1]などを使用しかし、あなたは唯一のサブ関数で)(ネストされた配列を抽出した場合、ローカル変数のスコープ汚染が許容されます。私はあなたの前の質問に作ら

0

配列や$ _GLOBALSを使用する必要が私は別の変数値に基づいて、名前の変数を作成するための最善の方法は、中括弧を使用していると信じて、ありません。

$variable_name="value"; 

${$variable_name}="3"; 

echo $value; 

//Outputs 3 

あなたは私がこのような方法を使用していたことがありませんし、それはおそらく悪い考えの兆候だということを警告しなければなりませんが、私は、より完全なソリューションを与えることができ、受信アレイであるかについて、より具体的であれば。

この詳細については、こちらをご覧ください。 http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/