2017-03-10 43 views
1

我收到了每個運動員的學校名單。如果運動員在對象中的狀態爲committed: true,我只想顯示該學校。否則,我想返回所有屬性。如何檢查在PHP中是否存在鍵/值對?

這是我的數據是這樣的:

... 
"offers": [ 
    { 
     "school": "Foo School", 
     "committed": true 
     }, 
     { 
     "school": "Bar School", 
     "committed": false 
     } 
    ] 
... 

在上面的例子中,我只是想顯示「富校」。 但如果committed屬性都是false我想顯示「Foo Schoo」「酒吧學校」。

這是我目前的,但我不管回來。

foreach ($object['athlete']['offers'] as $offer) { 
    if (isset($offer['committed']) && $offer['committed'] == 1) { 
     // return single school 
    } else { 
     // push into array & return? 
    } 
} 

謝謝你的任何建議!

+0

那麼問題是什麼? – Alexander

+0

如果offer陣列中的任何商品具有「committed:true」屬性,則只返回該商品。否則,返回數組中的所有商品。 – Damon

+0

它可能是混合數組/對象造成衝突嗎?你可能需要'$ offer-> committed'的語法。你在這裏使用'json_decode()'嗎? – Scuzzy

回答

2

我認爲這是你要找的東西,如果我錯了,請糾正我。如果它們都是假的,那麼它將返回全部。如果有一個或多個屬實,則返回第一個爲真的:

<?php 

$offers = array(
    array("school" => "Foo School", 
    "committed" => true 
), 
    array(
    "school" => "Bar School", 
    "committed" => false 
)); 

$fullReturn = ""; 
$flag = false; 
foreach ($offers as $offer) { 
    if (isset($offer['committed']) && $offer['committed']) { 
     echo $offer['school']; 
     $flag = true; 
     break; 
    } else { 
     $fullReturn .= $offer['school'] . "<br />"; 
    } 
} 

if (!$flag) { 
    echo $fullReturn; 
} 

?> 
+0

謝謝@nfn尼爾!我錯過了'break';因爲我沒有那個 - 系統繼續運行,無論如何都返回了所有結果。 – Damon

+0

是的,沒問題,有一個好的。 – Neil

+0

'break'不會影響任何東西!設置全局變量是主要原因@Damon –