簡體   English   中英

PHP字符串名稱作為數組中的變量

[英]php string name as variable in array

如何將數組中的字符串定義為新數組,如何在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數組中獲取定義為新數組的字符串。

怎么編碼呢? 或者如果我的問題很愚蠢,請提出建議。

謝謝。

我看不到您為什么要像這樣對數據建模,您在調試方面要求很多工作。 您可以使用“變量變量”來定義此變量,或者使用$ GLOBALS動態構建全局變量:

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

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

嘗試

$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'];
}

希望這是你問的

我對您之前的問題的回答:

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

這非常危險,因為它可能會覆蓋您認為在代碼中安全的變量。 您正在尋找的是extract

$result = array();

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

extract($result);

因此,如果$resultarray( 'a' => array(1,2), 'b' => array(3,4)) ,則最后一行定義變量$a = array(1,2)$b = array(3,4)

您不能為此直接使用變量變量,也不應這樣做。 但這是您可以做到的:

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

extract($results);

理想情況下,您將跳過extract ,並使用$results['id'][1]等。但是,如果僅在子函數中extract()嵌套數組,則可以接受局部變量作用域污染。

不需要數組或使用$ _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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM