2016-05-01 32 views
2

根據密鑰是否存在,我想回顯不同的圖像。根據數組值回顯不同的圖像

這裏是我使用

["Person"] => array(11) { 
    ["id"] => int(38482818123) 
    ["weight"] => int(140) 
    ["height"] => int(65) 
} 
["Name"] => array(2) { 
    ["firstname"] => string(4) "John" 
    ["lastname"] => string(5) "Smith" 
} 

陣列的一個例子所以名稱字段並不總是存在。如果名稱存在,則需要顯示image a,如果沒有名稱,則需要顯示image b

我已經試過:

foreach($personArray as $person) 
{ 
    if ($person['Name'] != '') 
    { 
     echo "<img src='image-a.png'>"; 
    } 
    else 
    { 
     echo "<img src='image-b.png'>"; 
    } 
} 

現在我的問題是,即使這個人有一個名字,我的頁面,而不是僅僅image a

我在看到這兩個圖像也嘗試過使用array_key_exists("Name", $personArray);,但由於某種原因,我得到了bool(false)

Array

+0

你正在迭代一個數組。所以如果有些人有名字,有些人不會,你可能會看到每個圖像的多個副本。 – mkasberg

+0

[empty()](http://php.net/manual/en/function.empty.php)可能是您正在尋找的功能。 '!empty($ person ['Name'])' – mkasberg

+1

從我可以看到,Person數組不包含名稱值。 Name是一個單獨的數組? – CmdrSharp

回答

1

您需要使用empty()象下面這樣: -

if(!empty($personArray['person']['Name'])){ 
    //image a code 
}else{ 
    //image b code 
} 
+0

它仍然顯示兩個,我不明白爲什麼它是這樣做的1人陣列。 –

+0

我可以在循環之外使用它嗎? –

+0

我的數組在名爲'$ result'的變量內部是json_decoded。我只是在我的循環之外嘗試了你的解決方案,並且如果名稱字段被填充,它會給出圖像2. –

3

首先,看來您對名稱不同的陣列,我不知道爲什麼你沒有這樣的:

["Person"] => array(11) { 
 
    ["id"] => int(38482818123) 
 
    ["weight"] => int(140) 
 
    ["height"] => int(65) 
 
    ["firstname"] => string(4) "John" 
 
    ["lastname"] => string(5) "Smith" 
 
    }

按照這種情況,可能不會爲某個人設置帶有「firstname」,「lastname」鍵的數組索引。因此,您可以檢查該索引是否使用

isset(); 功能

嘗試:

foreach($personArray as $person) 
 
{ 
 
    if (isset($person['firstname']) && isset($person['lastname'])) // You may use or as well || 
 
    { 
 
     echo "<img src='image-a.png'>"; 
 
    } 
 
    else 
 
    { 
 
     echo "<img src='image-b.png'>"; 
 
    } 
 

 

 
    // Or as a short hand if statement: 
 

 
    echo (isset($person['firstname'])&& isset($person['lastname'])) ? "<img src='image-a.png'>" : "<img src='image-b.png'>"; 
 
}

編輯:1 你似乎仍然使用兩個不同的數組:Person和名稱。這樣做,你不能說哪個特定的人有名字值或不: 例如:如果你有10人,並且名字數組與名字,姓氏只有7人,那麼你將有人[0],人[1 ] ..... person [9]和Name [0] ... Name [6]。 根據你的構造,Person和Name數組之間沒有任何引用/鏈接。假設第一個人有姓名,那麼Person [0]和Name [0]將代表同一個人。但是,如果前3個人沒有名字,那麼Person [3]將具有Name [0] ...等等,因此,不可能識別特定姓名數組屬於哪個Person。注意:你不能在Person的foreach()中使用Name [「firstname」]。因爲,你的名字數組的形式是Name [0] [「firstname」],Name [0] [「lastname」]等等。

底線:

如果可能的話,儘量使用/包括姓名,該人士陣列本身的姓氏。這樣,當使用foreach()迭代/循環Person數組時,你可以檢查每個人是否有姓,名或不是:希望這很清楚。

+0

我試過你的答案,但我仍然有兩個圖像。我可能在我的問題中描繪的陣列很差,但如果您想再看一看,我會拍攝一張照片。 –

+0

您的代碼也可以在循環外使用我的數組,謝謝! –

+0

好吧那麼:) –

相關問題