2014-11-08 47 views
-1

我需要只顯示該字符串的狀態值,但我不知道該怎麼做:如何從php獲取文本?

Web Object ( 
    [data] => stdClass Object ( 
     [operations] => stdClass Object ( 
      [384322232931] => stdClass Object ( 
       [status] => on 
      ) 
     ) 
    ) 
    [error] => 
) 

感謝閱讀

+1

$ something- > data-> operations-> 384322232931-> status – Kavvson 2014-11-08 21:58:11

回答

0

我相信數384322232931是「隨機」,如果是的話,你必須使用遞歸方法:

function captureStatus($data) { 
    $obj = (array) $data; 
    $key = key($obj); 

    if ($key === 'status') { 
     return $obj['status']; 
    } else if ($key !== NULL) { 
     return captureStatus($obj[$key]); 
    } 
    return NULL; 
} 

如果不是隨機的,使用@Barmar的方法

+0

您的代碼有效,謝謝 – Daniel 2014-11-08 22:10:56

+0

@Daniel請將我的答案標記爲正確,謝謝。 – 2014-11-08 22:18:10

3

如果對象是在$webobj,這將是:

$webobj->data->operations->{'384322232931'}->status 

當屬性名稱爲數字時,您不能使用正常的屬性語法,您需要大括號和引號,如下所述:How to access object properties with names like integers?

如果這個數字是帳戶ID,你可以這樣做:

$webobj->data->operations->{$account_id}->status 

其中$account_id包含您的帳號。

+0

如果{'384322232931'}是一個隨機數? – Daniel 2014-11-08 22:02:58

+0

這是來自JSON嗎?如果你使用'json_decode($ json,true)',那麼你可能會更容易,所以你得到一個數組而不是一個對象。然後你可以使用'foreach()'遍歷'operations'的所有元素。 – Barmar 2014-11-08 22:04:49

+0

從$ statusResponse = $ api-> status(ACCOUNT_ID_HERE);我從這個php sdk得到這個迴應:https://github.com/ElevenPaths/latch-sdk-php; – Daniel 2014-11-08 22:05:46

-1

它看起來像你想要的財產深深嵌入,所以你可能有的問題是,你需要通過幾個孩子。

嘗試: $ status = $ yourObj-> data-> operations-> 384322232931-> status;

我不知道這是否有幫助。我有點困惑你的意思是「字符串」,因爲你發佈的內容看起來像一個對象的print_r輸出。

如果你想要做的是從字符串中提取這個值,那麼我認爲你可能會做些不可思議的事情。

+0

是的,我發佈的數據是print_r輸出,抱歉,如果我發佈了錯誤的數據。 – Daniel 2014-11-08 22:04:59