2015-03-02 122 views
-1

你好,我正在嘗試將數組的值轉換爲變量。將數組值轉換爲變量

我有一個名爲X類,如下所示:

class x{ 

     public static function getData(){ 
      $data = array(
       "start" => '$id', 
       "end" => '$name' 
      ); 
      return $data; 
     } 

} 

的的getData函數返回數組:

陣列(大小= 2)
'開始'=>字符串「$ ID '(長度= 3)
'結束'=>串 '$名稱'(長度= 5)

我有功能如在另一個類如下:

$id=10; 
$name = "kheshav";  
$data = x::getData(); 
var_dump($data); 

我想是到ressolve陣列到其相應的變量在$id$name值。 這樣最終的結果將是如下:

陣列(大小= 2)
'開始'=> INT 10
'結束'=>字符串 'kheshav' (長度= 7)

我試着下面的代碼,但不抱希望:

foreach ($data as $key => $value) { 
    $data[$key] = eval("\$value =\"$value\";"); 

} 
+0

傳遞自己的價值觀來運作 – 2015-03-02 13:27:49

+0

該解決方案的工作,我必須承認但問題是,我可以有多個變量,並將它們作爲參數傳遞給它可能是忙碌的 – 2015-03-02 13:37:08

回答

1

那麼傳統的方式做這將是將數據傳遞到函數:

class x{ 

    public static function getData($id,$name){ 
     $data = array(
      "start" => $id, 
      "end" => $name 
     ); 
     return $data; 
    } 

} 


$id=10; 
$name = "kheshav";  
$data = x::getData($id,$name); 
+0

Tis解決方案的工作,我必須承認,但問題是,我可以有多個變量並通過他們作爲參數可能是忙碌 – 2015-03-02 13:35:05

+0

@KheshavSewnundun嗯,這是如何變量作用域,並有很好的理由。你可以打敗變量作用域並使用'global'關鍵字,但這不是一個好主意 – Steve 2015-03-02 13:39:10

+0

肯定它是另一個作用域,因此無法訪問,但有沒有辦法循環訪問數組並分配數組的值到其相應的變量。提前謝謝 – 2015-03-02 13:43:34

1

你應該參數的getData()功能如下:

public static function getData($id, $name){ 
     $data = array(
      "start" => $id, 
      "end" => $name 
     ); 
     return $data; 
    } 

然後你就可以這樣調用:

$id=10; 
$name = "kheshav";  
$data = x::getData($id, $name); 
+0

哈哈。快照....... – Steve 2015-03-02 13:28:36

+0

謝謝。這個解決方案正如我在其他評論中提到的那樣工作,但是,問題是我可以通過循環數組並將數組的值分配給其相應的變量來實現多個變量。先謝謝你 – 2015-03-02 13:49:39