【问题标题】:array variable index in that rare SimpleXML functions罕见的 SimpleXML 函数中的数组变量索引
【发布时间】:2010-09-21 18:52:40
【问题描述】:

我在表单选择上有一个标签,我使用 $ _POST 获得该值,如下所示:

$gallery = array($_POST['gallery']);

这个值会放在这里:

$image = $sitemap->gallery[$gallery]->addChild('image');

问题给我的错误如下:

Fatal error: Call to a member function addChild() on a non-object in

我不明白的是,如果我直接输入一个值,就像这样:

$gallery = 0;
$Image = $sitemap->gallery[$gallery]->addChild('image');

我做得很好,发生的事情是我希望用户选择, 有点奇怪,因为它可能会解决。

【问题讨论】:

  • 我在表单选择上有一个标签,我得到了这个值
  • $画廊=数组($_POST ['画廊']);我需要什么才能将索引放入函数 simplexml
  • 请发布您的原始代码。您现有的代码有大量的syntax 错误,因为$ 和变量名之间有空格。

标签: php arrays simplexml


【解决方案1】:

理解数组:

$gallery = array($_POST['gallery']);
echo "Gallery Array: <pre>".print_r($gallery,true)."</pre><br />";

输出:

Array
(
    [0] => 'value in array'
)

如何从数组中取出值:

echo "Get Array Value: ".$gallery[0]."<br />"; // You should be displaying the array index 0

添加自定义索引

$gallery = array('gallery' => $_POST['gallery']);
echo "Gallery Array: <pre>".print_r($gallery,true)."</pre><br />";

输出: 数组

(
    [gallery] => 'value in array'
)

从客户索引数组中获取值

echo "Get Array Value: ".$gallery['gallery']."<br />"; // You should be displaying the array index gallery

【讨论】:

    【解决方案2】:

    使用这个:

    $gallery = $_POST['gallery'];
    

    而不是这个:

    $gallery = array($_POST['gallery']);
    

    您传递了一个未正确索引的数组

    或者你可以这样试试:

    $gallery = array('gallery' => $_POST ['gallery']);
    

    $image = $sitemap->gallery[$gallery[0]]->addChild('image');
    

    两种方法都可以解决问题

    【讨论】:

    • 我不这么认为,但我已经用这个简单的函数 $id=intval($_POST['gallery']);
    【解决方案3】:

    非常感谢,但我对此进行了测试,并给了我同样的错误

      $gallery=array('gallery'=>$_POST['galeria']);
    $image = $sitemap->gallery[$gallery]->addChild('image');
    

    我不明白我的选择表单如下:

    <select id="textfield" name="galeria">
            <option id="textfield" value="">Escoger de la Lista</option>
            <?php
        $source = 'content.xml';
        // load as string
        $xmlstr = file_get_contents($source);
        $sitemap = new SimpleXMLElement($xmlstr);
        // load as file
        $sitemap = new SimpleXMLElement($source,null,true);
        //$bar_count = $sitemap->gallery->count();
        //for($i=0;$i<$bar_count;$i++){
        $contador="0";
        foreach($sitemap->gallery as $content) {
        $atributo = $content->attributes();
        echo "<option id='textfield' value='".$contador."'>".$atributo['Name']. "</option>";
        //}
        $contador++; 
        } 
        ?>
          </select>
    

    反正我试过echo得到了结果,不太明白

    【讨论】:

    • 这一行:'$image = $sitemap->gallery[$gallery]->addChild('image');'应该是:'$image = '$sitemap->gallery[$gallery['gallery']->addChild('image');'
    • $sitemap->gallery[$gallery['gallery']->addChild('image');
    • 您应该编辑您的问题,除非您已经回答了自己的问题,否则不要发布答案
    • $id=intval($_POST['gallery']);
    • 我不这么认为,但我已经用这个简单的函数 $id=intval($_POST['gallery']);
    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多