【发布时间】:2014-05-10 00:07:18
【问题描述】:
我现在已经对此进行了数小时的研究,所以我相信我不会重复,即使这似乎有一个简单的解决方案。
我有一个向 PHP 发送值的 HTML 表单,它获取值并将它们全部设置为一个变量。当我提交值并加载 PHP 时,它完全中断,好像存在语法问题,但我找不到任何明显的东西。 我像这样从 POST 设置变量:
$ital1=$_POST['checkbox1'];
$bold1=$_POST['checkbox2'];
$ital2=$_POST['checkbox3'];
$bold2=$_POST['checkbox4'];
然后我将这些变量与 simplexml 一起使用以写入 xml 文档以进行数据库化。这是其中的一个sn-p:
$xml = simplexml_load_file('settings.xml');
function loops()
{
$italvar = (eval('return $' . "ital{$string}"));
$boldvar = (eval('return $' . "bold{$string}"));
$alertvar = (eval('return $' . "alerttitle{$string}"));
$pagevar = (eval('return $' . "page{$string}n"));
$colorvar = (eval('return $' . "colorset{$string}"));
$string = strval($i);
for($i=1; $i<21; $i++)
{
if($xml->settings->checkbox->"ital{$string}" == $empty && $italvar == "on")//ITAL1
{
$xml->settings->checkbox->"ital{$string}" = $italvar;
}
else if($italvar == $empty && $xml->settings->checkbox->"ital{$string}" == "on")
{
$xml->settings->checkbox->"ital{$string}" = $empty;
}
else
{
continue;
}
}
$xml->asXML('settings.xml');
这只是函数的一部分,其余的基本上都是针对不同类型的变量重复的。我知道问题出在循环函数中,因为当我删除 loops() 时,PHP 至少在文档顶部加载了一些回声。
我不确定这里有什么东西坏了。我猜这是我如何组合和迭代变量的语法,它解释了标题。
所以我的问题是这样的。如何正确组合字符串和变量?
$italvar = (eval('return $' . "ital{$string}"));
$string = strval($i);
在这种情况下,我希望最终结果是 $ital#,# 是 forloop 的当前迭代,因此我可以正确地将 $_POST 中的 set 变量的值写入 xml,如顶部所示。
"ital{$string}"
$string = strval($i);
在这里我只希望它是一个字符串,例如 ital1,然后是 ital2,因为这就是在 xml 中调用的节点。我确定我做错了什么很明显,但我对 PHP 很陌生,我似乎无法弄清楚。非常感谢您的任何意见!
【问题讨论】:
-
您的错误报告是否开启?您确定这些值已正确发布吗?介意张贴表格吗?
-
你检查你的
error_log了吗? -
哦,天花板猫,这是什么?从
eval发送我们! -
当你发现自己想要变量时,尤其是
eval,你真正想要的是一个数组。 -
@deceze 更糟糕的是,OP 有一个数组开头...
标签: php string variables iteration simplexml