【问题标题】:Php SimpleXMLElement Object to variablePHP SimpleXMLElement 对象到变量
【发布时间】:2013-07-26 15:07:56
【问题描述】:

这是我的问题,下面我有一个 Api 脚本来手动输入 xml 对象 [user_token] 以根据令牌访问用户信息。因此,要输入数组中的每个属性,我使用了代码

foreach ($xml->result->data->users->entries->user_token as $user_token1) 
    echo $user_token1;

然后插入

if ($oneall_curly->get (SITE_DOMAIN . "/users/" . $user_token1 . ".xml"))
{
$result = $oneall_curly->get_result ();
print_r (($result->body));
}

因此,在此之后,我不确定出了什么问题,我在堆栈溢出和 php.net 上搜索了许多答案。我当然不是专家,实际上只是编码 php 的新手,但我肯定会感谢对这个问题的一些见解或对创建变量 $user_token1 的代码的帮助

非常感谢您的关注!

SimpleXMLElement Object
(
[request] => SimpleXMLElement Object
    (
        [date] => Fri, 26 Jul 2013 12:18:36 +0200
        [resource] => /users.xml??page=1&order_direction=desc
        [status] => SimpleXMLElement Object
            (
                [flag] => success
                [code] => 200
                [info] => Your request has been processed successfully
            )

    )

[result] => SimpleXMLElement Object
    (
        [data] => SimpleXMLElement Object
            (
                [users] => SimpleXMLElement Object
                    (
                        [pagination] => SimpleXMLElement Object
                            (
                                [current_page] => 1
                                [total_pages] => 1
                                [entries_per_page] => 500
                                [total_entries] => 2
                                [order] => SimpleXMLElement Object
                                    (
                                        [field] => date_creation
                                        [direction] => desc
                                    )

                            )

                        [count] => 2
                        [entries] => Array
                            (
                                [0] => SimpleXMLElement Object
                                    (
                                        [user_token] => 11111111-4444-bbbb-1111-111111111111
                                        [date_creation] => Wed, 24 Jul 2013 00:33:28 +0200
                                        [date_last_login] => Wed, 24 Jul 2013 02:08:44 +0200
                                        [num_logins] => 2
                                    )

                                [1] => SimpleXMLElement Object
                                    (
                                        [user_token] => 22222222-5555-aaaa-2222-333333333333
                                        [date_creation] => Wed, 24 Jul 2013 00:28:56 +0200
                                        [date_last_login] => Thu, 25 Jul 2013 07:08:20 +0200
                                        [num_logins] => 4
                                    )

                            )

                    )

            )

    )

)

这是我从之前的代码中输出的 simpleXML 对象和这个

$raw = "http://../../file.php";
$xml = simplexml_load_file($raw);

echo '<pre>';
print_r($xml);
echo '</pre>';
return $xml;


// Get an element by its id attribute


// or, loop over all of the <rate> elements
foreach ($xml->result->data->users->entries->user_token as $user_token1) 
    echo $user_token1;





if ($oneall_curly->get (SITE_DOMAIN . "/users/" . $user_token1 . ".xml"))
{
    $result = $oneall_curly->get_result ();
    print_r (($result->body));
}
//Error
else
{
$result = $oneall_curly->get_result ();
echo "Error: " . $result->http_info . "\n";
}



?>

【问题讨论】:

  • $oneall_curly 是 Oneall 社交登录 SDK 工具包创建的 php 变量
  • 我做了 print_r ($user_token1->body);它什么也没显示
  • 我做了 var_dump($user_token1) 它的 # 一起 11111111-4444-bbbb-1111-11111111111122222222-5555-aaaa-2222-333333333333{"response":{"request":{" date":"Fri, 26 Jul 2013 13:32:14 +0200","re​​source":"\/users\/","status":{"flag":"error","code":404," info":"指定的资源不存在:http:\/\/docs.oneall.com\/"}}}}object(SimpleXMLElement)#6 (4) { ["user_token"]=> string(36) "22222222-5555-aaaa-2222-333333333333" ["date_creation"]=> string(31) "星期三,2013 年 7 月 24 日 00:28:56 +0200" ["date_last_login"]=> string(31) "星期四, 2013 年 7 月 25 日 07:08:20 +0200" ["num_logins"]=> 字符串(1) "4" }
  • 请注意,这是在答案中使用以下代码之后

标签: php xml arrays variables


【解决方案1】:

由此$xml-&gt;result-&gt;data-&gt;users-&gt;entries

你选择这个:

[0] => SimpleXMLElement Object
(
    [user_token] => 11111111-4444-bbbb-1111-111111111111
    [date_creation] => Wed, 24 Jul 2013 00:33:28 +0200
    [date_last_login] => Wed, 24 Jul 2013 02:08:44 +0200
    [num_logins] => 2
)

[1] => SimpleXMLElement Object
(
    [user_token] => 22222222-5555-aaaa-2222-333333333333
    [date_creation] => Wed, 24 Jul 2013 00:28:56 +0200
    [date_last_login] => Thu, 25 Jul 2013 07:08:20 +0200
    [num_logins] => 4
)

现在您有一个包含 2 个SimpleXMLElement Objects 的数组。现在你可以foreach了

foreach ($xml->result->data->users->entries as $entry) {
    echo $entry->user_token;
}

【讨论】:

  • 所以这就是我通过使用此代码 foreach ($xml->result->data->users->entries->user_token as $user_token1){ 回显 $user_token1->user_token1; } 我是否需要在 if ($oneall_curly->get (SITE_DOMAIN . "/users/" . $user_token1 . ".xml")) { 上做一个 foreach 来运行每个令牌?
  • 或者您将令牌保存在临时数组中。但是你需要循环两次。所以我会把 if 语句放在循环中是的。
【解决方案2】:

试试这种类型。 entries 是一个主数组。所以你可以存储一个变量然后你通过foreach执行

<?php
$user_token = $xml->result->data->users->entries;
foreach ($user_token as $user_token1){
    echo $user_token1->user_token;
    }
?>

【讨论】:

  • 不幸的是只返回来自 echo '
    ' 的信息; print_r($xml);回声'
    ';
  • 我做了 var_dump($user_token1) 它的 # 一起 11111111-4444-bbbb-1111-11111111111122222222-5555-aaaa-2222-333333333333{"respon‌​se":{"request": {"date":"Fri, 26 Jul 2013 13:32:14 +0200","re​​source":"\/users\/","status":{"flag":"error","code":404 ,"info":"指定的资源不存在:http:\/\/docs.oneall.com\/"}}}}object(SimpleXMLElement)#6 (4) { ["user_token"]=> string( 36)“22222222-5555-aaaa-2222-333333333333”
猜你喜欢
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 2016-03-30
  • 2012-02-03
相关资源
最近更新 更多