2016-10-03 85 views
1

PHP通配符我有時會遇到和對象是這樣的:爲對象鍵

stdClass Object 
(
[batchcomplete] => 
[query] => stdClass Object 
    (
     [pages] => stdClass Object 
      (
       [48548] => stdClass Object 
        (
         [pageid] => 48548 
         [ns] => 0 
         [title] => Dopamine 

該對象鍵48548每一次的會是不同的,所以我不知道它的價值是什麼樣的方式。可以說,我需要在這個對象拿到冠軍(多巴胺),我需要做這樣的事情:

$title = $object->query->page->{*WILDCARD*}->title; 

但我還沒有想出一個辦法做到這一點呢。有沒有辦法像這樣跳過一個對象鍵,而不必找出鍵的值?

回答

2

數字對象屬性不起作用。假設只有一個,轉換成數組,並拿到鑰匙:

$array = (array)$object->query->pages; 
$title = $array[key($array)]->title; 

或者只是得到一個元素:

$title = current((array)$object->query->pages)->title; 

如果這是從JSON來您可能需要將其作爲一個解碼陣列在第一位。如果沒有,那麼也許這:

$array = json_decode(json_encode($oject), true); 

對於非數字屬性這應該工作:

$var = key(get_object_vars($object->query->pages)); 
$title = $object->query->pages->$var->title; 
+0

謝謝,我只是你的方法去。我之前使用過CakePHP,我記得它有處理數組的各種函數,其中一個是遞歸數組搜索工具。我想知道是否包含這樣的各種實用程序的輕量級框架。 –