数组变量索引在那个罕见的SimpleXML函数中

时间:2010-09-21 18:52:40

标签: php arrays simplexml

我在表单选择上有一个标签,我用$ _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');

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

3 个答案:

答案 0 :(得分:0)

使用它:

$gallery = $_POST['gallery'];

而不是:

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

传递未正确索引的数组

或者你可以这样试试:

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

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

无论哪种方式都应解决问题

答案 1 :(得分:0)

非常感谢,但我测试了这个并且给了我同样的错误

  $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>
无论如何,我已经尝试过做了一个回声,我得到了结果,不明白

答案 2 :(得分:0)

了解数组:

$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