[英]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);
因此,如果$result
是array( '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.