1

配列から文字列を取得して新しい配列として定義する方法、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配列定義から文字列を新しい配列として取得したい。

どのようにコーディングするのですか?または私の質問がばかげている場合は、提案をお願いします。

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

4

6 に答える 6

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;
  }
}
于 2011-01-11T12:53:05.897 に答える
1

なぜこのようにデータをモデル化する必要があるのか​​ わかりません。デバッグの観点から、あなたは世界を傷つけようとしているのです。これを定義したり、$GLOBALS を使用してグローバル変数を動的に作成したりするために使用できる「変数変数」があります。

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

$GLOBALS[$somevar][0] = "first index"; // creates $hello[0] in global scope
于 2011-01-11T12:06:09.457 に答える
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'];
}

これがあなたが尋ねたものであることを願っています

于 2011-01-11T12:06:36.660 に答える
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/

于 2011-01-11T13:02:27.647 に答える
0

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

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

extract($results);

理想的にはextract、 をスキップして etc を使用します$results['id'][1]。ただし、サブ関数でネストされた配列のみを extract() する場合、ローカル変数スコープの汚染は許容されます。

于 2011-01-11T12:09:33.157 に答える
0

これは、コード内で安全と見なされている変数を上書きする可能性があるため、非常に危険です。あなたが探しているのはextract

$result = array();

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

extract($result);

したがって、が で$resultあった場合、最後の行で変数およびarray( 'a' => array(1,2), 'b' => array(3,4))が定義されます。$a = array(1,2)$b = array(3,4)

于 2011-01-11T12:07:43.820 に答える