我有多个变量,例如$soft0 , $soft1 , $soft2 , $soft3 , $soft4 , $soft5
,也有$fo0 , $fo1 , $fo2 , $fo3 , $fo4 , $fo5
,但如果我想在这里应用if条件,那么它会显示错误。代码:
for ($i=0; $i<=29; $i++) {
$soft$i = str_replace(" ", "+", $fo$i); // this line showing an error
$link_f_u = $html->find('h3', 0);
$keyy = $link_f_u->plaintext;
if ($soft$i==$keyy){
continue;
} else {
publish($soft$i);
}
}
修改此代码的想法是什么?
答案 0 :(得分:3)
这将解决您的错误,但我高度建议您查看数组:http://php.net/manual/en/language.types.array.php
for($i=0;$i<=29;$i++){
$softVarName = "soft" . $i;
$foVarName = "fo" . $i;
$$softVarName = str_replace(" ", "+", $$foVarName);
$link_f_u = $html->find('h3', 0);
$keyy = $link_f_u->plaintext;
if ($$softVarName==$keyy){
continue;
} else {
publish($$softVarName);
}
}
答案 1 :(得分:2)
这应解决问题。
for($i=0;$i<=29;$i++){
${'soft' . $i} = str_replace(" ", "+", ${'fo' . $i}); // this line showing an error
$link_f_u = $html->find('h3', 0);
$keyy = $link_f_u->plaintext;
if (${'soft' . $i} == $keyy){
continue;
} else {
publish(${'soft' . $i});
}
}
答案 2 :(得分:2)
将$soft0 ... $soft10
更改为arrays,看起来像$soft[0] .. $soft[10]
。然后,您可以在for循环中使用count()
:
for($i=0;$i<=count($soft);$i++){
$soft[$i] = str_replace(" ", "+", $fo[$i]);
$link_f_u = $html->find('h3', 0);
$keyy = $link_f_u->plaintext;
if ($soft[$i]==$keyy){
continue;
} else {
publish($soft[$i]);
}
}
你也可以使用双美元符号,但这很麻烦,可能会导致难以捕捉的错误。
$soft_name = 'soft'.$i;
$fo_name = 'fo'.$i;
$$soft_name = str_replace(" ", "+", $$fo_name);