将数据放入数组中

时间:2013-12-31 13:05:49

标签: php arrays simplexml

我有以下代码:

    <?php
    $attr_data = array();

foreach ($content->search as $attributeSelected)
    {

    $attr_data[] = $attributeSelected['id'];
    }
    ?>

这将数据保存为:

Array ( 
        [0] => SimpleXMLElement Object ( [0] => 23914175_laptop )
        [1] => SimpleXMLElement Object ( [0] => 23914175_laptop )
        [2] => SimpleXMLElement Object ( [0] => price_range_10_50004 ) 
) 

但是我只想要数组数据而不包含“SimpleXMLElement对象”。所以我添加了以下代码:

    <?php
    $attr_data = array();

foreach ($content->search as $attributeSelected)
    {    
    $attr_data[] = json_decode(json_encode($attributeSelected['id']), true);
    }
    ?>

现在给我的数据为:

Array (
        [0] => Array ( [0] => 23914175_laptop ) 
        [1] => Array ( [0] => 23914175_laptop )
        [2] => Array ( [0] => price_range_10_50004 ) 
) 

我不确定我做错了什么。我只想将数据保存到数组中,然后使用If语句检查数组是否包含特定数据。

4 个答案:

答案 0 :(得分:2)

怎么样:

$attr_data[] = $attributeSelected['id'][0];

答案 1 :(得分:0)

您正在尝试存储对象,如果您需要第一个对象值,则应将第三行更改为:

$attr_data[] = $attributeSelected['id']->0;

答案 2 :(得分:0)

请添加一小段XML,它会让事情变得更加清晰。

将值{t}转换为string

$xml = simplexml_load_string($x); // assume XML in $x
$att = array();

foreach ($xml->search as $a) {
    $att[] = (string)$a['id'];
}

看到它有效:http://codepad.viper-7.com/P0DI0S

答案 3 :(得分:0)

SimpleXMLElement类有一个__toString方法,所以你可以直接调用它(这有点丑陋的IMO)或只是将它强制转换为字符串:

<?php
$attr_data = array();

foreach ($content->search as $attributeSelected)
{
    $attr_data[] = (string) $attributeSelected['id'];
    // Or
    $attr_data[] = $attributeSelected['id']->__toString();
}
?>

http://php.net/manual/en/simplexmlelement.tostring.php

了解详情