【问题标题】:Iterating variables in PHP not workingPHP中的迭代变量不起作用
【发布时间】: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


【解决方案1】:

你有一个$_POST 数组。使用它。

for( $i=1; $i<=20; $i++) {
    $ital = $_POST['checkbox'.($i*2-1)];
    $bold = $_POST['checkbox'.($i*2)];

    // now do stuff with `$bold` and `$italic`
}

【讨论】:

  • 是的,我想我在做一些明显糟糕的代码,但仍然掌握了这一切!但这很完美,谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多