2014-03-05 27 views
3

我需要一些foreach循環的幫助。說我有這種方法:php foreach循環,無法將值分配給適當的變量名稱?

public function showPaymentDetails() { 

    $data = array("name"    => $this->name, 
        "lastname"   => $this->lastname, 
        "email"   => $this->email, 
        "company"   => $this->company, 
        "event_name"  => $this->event_name, 
        "event_price"  => $this->event_price, 
        "uniqid"   => $this->uniqid, 
        "mobile"   => $this->mobile, 
        "travel"   => $this->travel, 
        "job"    => $this->job, 
        "how_hear"   => $this->how_hear, 
        "geusts"   => $this->guests, 
        "slider_network" => $this->slider_network, 
        "slider_invest" => $this->slider_invest, 
        "slider_investors" => $this->slider_investors, 
        "gender"   => $this->gender 
       ); 

    return $data; 

} 

現在我想分配一個數組的每個值到一個變量。這是我做的:

$i = 0; 
foreach($data as $row[$i]) { 
    $row[$i]; 
    $i++; 
} 

echo $row[0]; 
echo $row[1]; 
echo $row[2]; 

正如你所看到的,我將值賦給$row[]。這真的很糟糕。如何將這些值分配給$name,$lastname等變量名稱。

謝謝!

+0

也許你應該說明你想要做什麼.. 。聽起來不正確。 – djot

+1

'extract($ data);'? http://php.net/extract你爲什麼要這樣做? –

+4

爲什麼將它們分配給變量?你已經有了一個帶有命名鍵的數組。這比單獨的變量更有效。 – JamesG

回答

3

我覺得你並不需要循環數組中,你可以指定使用數組變量,並用鑰匙

$data = showPaymentDetails(); 
$name = $data['name']; 
$lastname = $data['lastname']; 
//and so on 
1

可變變量的作用域是你所描述的,但是我只想用$data數組並且不分配給單個變量:

foreach($data as $key => $value) { 
    $$key = $value; 
} 

而且,extract($data);是相同的結果。

你的代碼仔細看看有我想知道,爲什麼在世界上你是建設類功能的陣列,它由已存在的對象的瓦爾只是把它們轉化爲獨立的瓦爾?到目前爲止設計不好。

2

你可以做

foreach($data as $key => $value) { 
    $$key = $value; 
} 

那麼這會變成$this->name$name。但是,這是非常不好的做法。你是剛剛訪問像

$data['name']; 
$data['lastname']; 
//Etc 
+0

順便說你缺少一個paranthesy在你的foreach – Fabio

+0

@Fabio謝謝你讓我知道。我編輯過 – Pattle

0

變量你可以更好的電流範圍內提取出來:

extract(showPaymentDetails()); 

echo $lastname; 

參見:extract()

相關問題