php foreach循环,无法为正确的变量名赋值?

时间:2014-03-05 20:26:16

标签: php foreach

我需要一些关于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等变量名称

谢谢!

4 个答案:

答案 0 :(得分:3)

我认为您不需要在数组中循环,您只需使用数组分配变量,使用键分配范围

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

答案 1 :(得分:2)

你可以做到

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

然后将$this->name变为$name。然而,这是非常糟糕的做法。你最好只是访问像

这样的变量
$data['name'];
$data['lastname'];
//Etc

答案 2 :(得分:1)

变量就是你所描述的,但是我只使用$data数组而不是分配给各个变量:

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

此外,extract($data);也是同样的结果。

仔细看看你的代码让我想知道,为什么在世界上你在一个由已经存在的对象变量组成的类函数中构建一个数组,只是为了将它们转换成独立的变量?到目前为止设计不好。

答案 3 :(得分:0)

您可以在当前范围内提取它们:

extract(showPaymentDetails());

echo $lastname;

另请参阅:extract()