2012-01-09 216 views
1

想象,我有一個數組中的3個變量:轉換變量的名稱字符串

$var1 = "a"; 
$var2 = "b"; 
$var3 = "c"; 
$a = array($var1, $var2, $var3); 
foreach($a as $var) 
{ 
    //code that create strings with variable names and echo var1 , var2 , var3 
} 

這是更多鈔票來做到這一點用PHP?

+2

這個問題很不清楚。你可以提供一段代碼,將*變量放入數組中。 – 2012-01-09 15:22:05

+0

同意@ÁlvaroG.Vicario,請更具體地說明您要實現的目標。 – Oldskool 2012-01-09 15:34:08

回答

4

如果你想看看,如果你能回憶起您創建的數組變量的名字,我很抱歉告訴你這一點,但這是不可能的(至少,就像你的例子那樣)。當你創建該數組時,你正在製作這些變量的副本並將它們存儲在數組中。你實際上並沒有指向原始變量。

幾個選項的頭頂。

選項1:使用變量名稱作爲鍵創建數組。

選項2:事先將變量名稱分配給變量本身。例如:$var1->VAR_NAME = 'var1';

方案3:嘗試一種解決方法就像一個建議這裏:How to get a variable name as a string in PHP?

方案4:如果你只需要它引用原始變量,嘗試捕獲參考自身使用&的對象。

希望有所幫助。

0
$a = array($var1, $var2, $var3); 
foreach($a as $key => $value) { 
    echo($key . ' => ' . $value); 
} 
+0

這不是我的答案:( – 2012-01-09 15:28:02

+0

所以,我沒有承諾你的問題。 – 2012-01-09 15:40:56

1

如果您可以將您的變量是這樣的:

$array = array(
    'a' => 'apple', 
    'b' => 'banana', 
    'c' => 'carrot', 
    'd' => 'date', 
    'e' => 'elephant'); 

可以使用key函數檢索任何類型的循環內的當前數組元素的索引/鍵,見#1,或使用key => value語法在foreach()循環,見#2:

<?php 
    $array = array(
    'a' => 'apple', 
    'b' => 'banana', 
    'c' => 'carrot', 
    'd' => 'date', 
    'e' => 'elephant'); 

    /* #1 */ 
    foreach($array as $value) { 
     /* get the key for the item at the cursor position of the array */ 
     $key = key($array); 
     print "{$key} = {$value}<br>"; 
     /* move the cursor to the next item in the array */ 
     next($array); 
    } 

    /* #2 */ 
    foreach($array as $key => $value) { 
     print "{$key} = {$value}<br>"; 
    } 

?> 

如果你只是想獲得一個變量名,你不能STOR e數組中的值並維護變量名稱,一旦將值放入數組中,它們將失去變量名稱。

之外的陣列的,則可以使用下面的溶液(來自http://www.php.net/manual/en/language.variables.php#76245):

<? 
    $myVarName = "myValue"; 
    echo var_name($myVarName) . " = {$myVarName}"; 

    function var_name(&$var, $scope=0) 
    { 
     $old = $var; 
     if (($key = array_search($var = 'unique'.rand().'value', !$scope ? $GLOBALS : $scope)) && $var = $old) return $key; 
    } 
?> 
3

當運行$a = array($var1 ..,這些值將被寫入到$a,和原來的符號表名,$var1被分開存放我相信。這意味着,不,現在沒有辦法獲取原始變量名稱。你必須做到這一點的時間提前,或做一些瘋狂的魔法與get_defined_vars

$var1 = 'a'; 
... 
$varnames = array('var1', 'var2', 'var3'); 
$a = compact($varnames); 
//$a now has array('var1' => 'a' ... 
+0

'array_combine()'沒有實現任何內容;'compact(array('var1','var2','var3')) '(或'compact('var1','var2','var3')')返回相同的結果 – cmbuckley 2012-01-09 15:39:40

+0

@cbuckley絕對正確,不知道我在想什麼。 – 2012-01-09 15:44:20