为什么这个变量变量不正常? PHP

时间:2015-09-01 09:14:13

标签: php

我有这个foreach循环。

$i2看起来像这样(每次):

$i2 = array(
    'id' => "category['id']"
);

这是一个foreach循环。

foreach ($i2 as $o3 => $i3)
{
    if (is_array($i3) !== true)
        {
            $new .= "<{$o3}>{$node->$i3}</{$o3}>";
        } else {
            $new .= "<{$o3}>";
            $new .= "</{$o3}>";
        }
    }
}

$nodenew SimpleXMLElement($xml_reader->readOuterXML());。但这是正常的。

问题在于:如果我使用$node->$i3来获取该字段的XML值 - 它不起作用。但是,如果我用$node->category['id']代替$i3它。这似乎很奇怪category['id']包含// i move the cursor to the first product tag while ($xml_reader->read() and $xml_reader->name !== 'product'); // i iterate over it as long as I am inside of it while ($xml_reader->name === 'product') { // i use SimpleXML inside XMLReader to work with nodes easily but without the need of loading the whole file to memory $node = new SimpleXMLElement($xml_reader->readOuterXML()); foreach ($this->columns as $out => $in) // for each XML tag inside the product tag { // ... do stuff ,我可以使用调试工具检查它。

我在以前的项目中使用它,变量的变量工作正常。现在它没有。为什么呢?

@edit

这是在代码之前发生的事情:

$columns

基本上这是在有问题的代码之前发生的事情。 <product> <associations> <categories> <category> <id></id> </category> <category> </associations> </products> 是一个数组,可以配置输入XML文件(键是Prestashops XML标签,值是用户XML文件中的标签名称)。

例如:

<category id="1"></category>

在输入一:

$columns

所以在$columns = ('associations' => array( 'categories' => array( 'category' => 'category['id'] // this is what $i3 later is ) ));

category['id']

我可以轻松地达到XML文件的给定点。我得到$i3值,这就是curl

1 个答案:

答案 0 :(得分:2)

PHP预处理器尝试在$ node上查找$ i3属性。但是对象$ node没有这样的属性,然后就失败了。

在尝试访问之前项目中的类别['id']属性时,您确定使用相同的语法吗?

您可以尝试以下语法:

foreach ($i2 as $o3 => $i3)
{
    if (is_array($i3) !== true)
    {
        $new .= "<{$o3}>" . eval("return \$node->$i3;") ."</{$o3}>";
    } else {
        $new .= "<{$o3}>";
        $new .= "</{$o3}>";
    }
}