2015-03-13 52 views
-2

下面我有,我從JSON有這樣如何過濾器PHP陣列stdClass的對象

$page = file_get_contents("http://giswebcenter.mwa.co.th/mwa/ashx/Proxy.ashx"); 
$json_output = json_decode($page); 

陣列中的數據,然後我有這樣的數據時,我的print_r($ json_output)

stdClass Object 
(
    [success] => 1 
    [total] => 850 
    [message] => 
    [data] => Array 
     (
      [0] => stdClass Object 
       (
        [BRANCH] => 01 
        [ZONE] => 03 
        [BLOCK] => 04 
        [MATL] => ST 
       [LENGTH] => 516.492 
      ) 

     [1] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 03 
       [BLOCK] => 05 
       [MATL] => SCP 
       [LENGTH] => 19.177 
      ) 

     [2] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 03 
       [BLOCK] => 05 
       [MATL] => ST 
       [LENGTH] => 519.355 
      ) 

     [3] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 03 
       [BLOCK] => 06 
       [MATL] => SCP 
       [LENGTH] => 59.713 
      ) 

     [4] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 03 
       [BLOCK] => 06 
       [MATL] => ST 
       [LENGTH] => 476.866 
      ) 

     [5] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 04 
       [BLOCK] => 03 
       [MATL] => SCP 
       [LENGTH] => 64.875 
      ) 

     [6] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 04 
       [BLOCK] => 03 
       [MATL] => ST 
       [LENGTH] => 44.888 
      ) 

     [7] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 04 
       [BLOCK] => 05 
       [MATL] => SCP 
       [LENGTH] => 19.979 
      ) 

     [8] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 04 
       [BLOCK] => 05 
       [MATL] => ST 
       [LENGTH] => 28.591 
      ) 

     [9] => stdClass Object 
      (
       [BRANCH] => 01 
       [ZONE] => 04 
       [BLOCK] => 07 
       [MATL] => SCP 
       [LENGTH] => 38.967 
      ) 
     ) 
) 

我想過濾數組中的數據爲ZONE = '03'
我試過這個代碼與array_filter(),但注意到。

function filterZone($obj) 
{ 
    return $obj['data']->BRANCH == "01"; 
} 
$BRANCH = array_filter($json_output, 'filterZone'); 
print_r($BRANCH); 

任何人都可以幫助或者建議我這樣做嗎?
謝謝。

+4

的可能重複[我怎樣才能篩選stdClass的對象(http://stackoverflow.com/questions/29025075/how-can-i-filter -stdclass-object) – James 2015-03-13 07:07:31

+0

@Sadikhasan它是重複的,因爲這兩個問題都來自同一個用戶,在2小時內。我不在乎他們以前是否有答案,這是浪費我和其他人的時間,而且不公平。這根本不是板球! – James 2015-03-13 07:12:51

+0

@詹姆斯你是對的!我們必須「關閉」這個問題。 – Sadikhasan 2015-03-13 07:14:00

回答

0

非常簡單。你正在嘗試array_filter那些不是真正的數組(或者至少是你試圖迭代的數組)。

你想更多像這樣運行的東西:

function filterZone($obj) 
{ 
    return $obj['ZONE'] == '03'; 
} 
$BRANCH = array_filter($json_output->data, 'filterZone'); 
print_r($BRANCH); 
+0

這是來自同一用戶的一個問題。爲什麼回答它? – James 2015-03-13 07:28:15

+0

當我開始時,複製並沒有被調出,它幾乎毫不費力地回答,而且事實證明,如果您不僅僅閱讀源文件,而且複製實際上是一個不同的問題。 – 2015-03-13 15:44:39

+0

夠公平的。雖然,唯一的區別是這個問題與上一個問題的答案有一點「增加」,應該在前一個問題中討論過,而不是提出一個新問題。 – James 2015-03-14 06:45:20