我有阵列
[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>';
}
答案 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第一个代码块中的数组吗?