2013-08-02 116 views
0

我需要獲取"label","name"的對象信息,其中value=true在PHP變量中,而不是value=false從JSON獲取PHP的價值

這個JSON數組是如何完成的?

如果我做JSON的的var_dump我得到這個:

array(8) { 
    [0]=> 
    object(stdClass)#8 (3) { 
    ["label"]=> 
    string(4) "Name" 
    ["name"]=> 
    string(7) "txtName" 
    ["value"]=> 
    bool(true) 
    } 
    [1]=> 
    object(stdClass)#9 (3) { 
    ["label"]=> 
    string(6) "E-mail" 
    ["name"]=> 
    string(8) "txtEmail" 
    ["value"]=> 
    bool(true) 
    } 
    [2]=> 
    object(stdClass)#10 (3) { 
    ["label"]=> 
    string(12) "Phone Number" 
    ["name"]=> 
    string(8) "txtPhone" 
    ["value"]=> 
    bool(false) 
    } 
    [3]=> 
    object(stdClass)#11 (3) { 
    ["label"]=> 
    string(19) "Mobile Phone Number" 
    ["name"]=> 
    string(14) "txtMobilePhone" 
    ["value"]=> 
    bool(false) 
    } 
} 
+0

你的意思是'json_encode()'和'json_decode()'? – hjpotter92

+1

*「這個JSON數組是如何完成的?」*這裏沒有JSON,看起來像是傾倒出一個PHP對象圖的結果。你可以編輯你的問題,讓它更清楚你實際處理的是什麼數據?並添加你已經嘗試過的細節等。 –

+0

我想他是問這是否可以用簡單的json_encode([...],函數($ el){return $ el.value})來完成,答案是沒有。 –

回答

5
$arr = array(); 
$i = 0; 
foreach($json as $key => $items) { 
    if($items->value == true) { 
     $arr[$i]['label'] = $items->label; 
     $arr[$i]['name'] = $items->name; 
     $i++; 
    } 
} 
1

可以作爲一個對象或數組,在這個例子中,我使用一個數組進行解碼。

首先要採取的JSON編碼信息,並將其解碼成PHP數組,你可以使用json_decode()此:

$data = json_decode($thejson,true); 

//the Boolean argument is to have the function return an array rather than an object 

然後,你可以通過它循環,你會正常的陣列,並建立僅包含元素的新數組,其中的「價值」滿足你的需要:

foreach($data as $item) { 

    if($item['value'] == true) { 
     $result[] = $item; 
    }  

} 

然後,您有數組

$result 

在您的處置。

0

的用戶JohnnyFaldo提出的建議和索姆簡化:

$data = json_decode($thejson, true); 
$result = array_filter($data, function($row) { 
    return $row['value'] == true; 
});