变量名称中的空格不能正常工作

时间:2012-02-16 17:33:19

标签: php arrays

我有阵列

[Company] => Demo Company 1
[First Name] => Test
[Last Name] => Lead 1
[Designation] => This is testing title 1
[Email] => email1@yopmail.com
[Phone] => 242377

我使用了extract()函数,因此所有索引值都将成为变量名,我也使用{},因为变量名中有空格。但我不知道为什么它不工作:( 这个$ {'名字'}返回空白......下面是我的代码

foreach($vals as $value){
extract($value);
echo '<tr><td><a href="edit.php?id='.$LEADID.'">'.${'First Name'}.' '.${"Last Name"}.'</a></td><td>'.$Company.'</td><td>'.$Phone.'</td><td>'.$Email.'</td></tr>';
}

3 个答案:

答案 0 :(得分:6)

变量名称不能包含空格。如需参考,请阅读manual on variables

  

有效的变量名称以字母或下划线开头,后跟   任意数量的字母,数字或下划线。作为一个常规   表达,它将表达如下:   '[A-ZA-Z_ \ x7f- \ XFF] [A-ZA-Z0-9_ \ x7f- \ XFF] *'

如果我是你,我会在数组上使用较短的名称,而不是$value使用$v或类似名称。您还可以使用printf使代码更具可读性:

foreach($vals as $v) {
  printf('<tr><td><a href="edit.php?id=%d">%s %s</a></td><td>%s</td><td>%s</td><t\
d>%s</td></tr>',
         $LEADID,
         $v['First Name'],
         $v['Last Name'],
         $v['Company'],
         $v['Phone'],
         $v['Email']);
}

答案 1 :(得分:1)

我认为您应该在使用extract之前删除空格:

$keys = str_replace( ' ', '', array_keys($vals));
$values = array_values($vals);
$vals = array_combine($keys, $values);

然后,在extract之后,你会有$FirstName等变量。

答案 2 :(得分:0)

在这种情况下,你真的不需要提取。 您可以在插值字符串中使用数组索引。

$sample = array('name' => 'frank, 'age' => 42);
echo "{$sample['name']} is {$sample['age']} years old.";

如果你可以避免使用$ {'奇怪名字'},你应该这样做。如果你真的需要这样做: 请更新您的问题并告诉我们如何定义$ value。是vals第一个代码块中的数组吗?