2014-10-18 19 views
0

在我有這種類型的數組:獲得來自陣列基礎數據上的值這個數組

$fruits = array(
    array(
     'fruit'  => "Banana", 
     'color'  => "Yellow", 
     'latinName' => "Banana", 
     'origin'  => "Africa" 
    ), 
); 

我怎樣才能獲得color如果我有例如fruit價值?

我使用這個結構,我想用這個數組,通過給予fruit name,該colorlatinName獲得其它信息。

謝謝。

+0

我將重新排列你的數組,使水果數據所在的數組是頂層數組的數組,其中的關鍵是水果名稱。例如'array(banana => array(color =>「pink」,「latinname」=>「Banaerous Athra」))'。 (雖然不知道香蕉會有拉丁名字......)。就像現在一樣,您必須遍歷數組,找到包含您所引用的水果的子數組,然後查找該數組中的顏色。 – James 2014-10-18 22:40:32

+0

好點,但我建立它是這樣的,以便使用相同的數組來獲取基於不同數據(水果,顏色,拉丁名稱或來源)的值。隨着你的解決方案,我將需要一個數組爲每個數據。 – Bonito 2014-10-18 22:43:08

+0

你怎麼不需要一個數組* *您的*解決方案的每個數據?如果你只有一個數組,沒有子級數組,那麼你怎麼區分哪種顏色與哪種水果相伴,尤其是考慮到你不能擁有重要的名字。 – James 2014-10-18 22:46:54

回答

0

不知道這是最好的方式,但它的工作原理是肯定(也許有一些功能太多,但IDK的不好意思):

$fruits = array(
    array(
     "fruit"   => "Banana", 
     "color"   => "Yellow", 
     "latinName"  => "Banana", 
     "origin"  => "Africa" 
    ), 
    array(
     "fruit"   => "Apple", 
     "color"   => "Red", 
     "latinName"  => "Dunno1", 
     "origin"  => "Dunno2" 
    ), 
    array(
     "fruit"   => "Orange", 
     "color"   => "Orange", 
     "latinName"  => "Dunno3", 
     "origin"  => "Dunno4" 
    ), 
); 

for($i=0; $i<count($fruits); $i++){ 
    if($fruits[$i]["fruit"]=="Banana"){ 
     echo $fruits[$i]["color"]; 
    } 
} 
+0

你錯過了關鍵名稱的引號是什麼意思。 – Fluffeh 2014-10-18 23:09:52

+0

編輯,感謝Fluffeh – Coletz95 2014-10-18 23:17:31

0

PHP docs看看array_flip。雖然我會同意你的數據結構使得這個比較笨拙,但這個函數可能會緩解一些問題。

+0

同意 - 結構很奇怪,但我想到更多的原始問題'如果你有水果找到顏色' – ethrbunny 2014-10-18 22:51:56

0

似乎是一個很瑣碎foreach語句,除非我錯過了什麼而不是昭然若揭了:

<?php 

    $input='Banana'; 
    $fruits = array(
     array(
     'fruit'   => "Banana", 
     'color'   => "Yellow", 
     'latinName'  => "Banana", 
     'origin'  => "Africa" 
     ), 
    ); 

    foreach($fruits as $val) 
    { 
     if($val['fruit']==$input) 
     { 
      echo $val['color']; 
     } 
    } 

?> 

編輯:在您的陣列的結構,沒有錯用這個簡單的二維數組。如果有的話,我會考慮使用你的外部陣列的關鍵命名結構,這可能會使其更容易使用你:

$fruits = array(
    "Banana" => 
      array(
      'color'   => "Yellow", 
      'latinName'  => "Banana", 
      'origin'  => "Africa" 
    ) 
); 

這樣,那麼你可以使用通用名稱來訪問右內陣列 - 你可以根據需要使用所有內置的PHP函數查找/訪問密鑰。

+0

嗨@詹姆斯,如果在答案缺少引號,有建議編輯改進它而不是留下晦澀的評論沒有錯 - 事實上它會以有意義的方式對網站做出貢獻。等到你的代表得到更高的發揮snarky評論遊戲:) – Fluffeh 2014-10-18 22:59:13

+1

你認爲以下哪個評論爲網站增加更多價值:「您的代碼將輸出至少4個錯誤。」或者「您忘記將引號添加到數組鍵中的複製代碼中。」只是說,積極而不是消極是件好事:) – Fluffeh 2014-10-18 23:04:04

+0

我所說的既不是陰暗也不是消極的,這是一個內容豐富的關於你錯誤的友善的微調。首先,您需要提供工作代碼,而不是其他人來確保您的工作是正確的。正如許多人所做的那樣,我可以有理由低估你的代碼的錯誤。但相反,我沒有downvote並給你一個*友好的微調*!顯然這不夠好,我應該寫出你出錯的地方?正如你所說,我會等到我的代表更高,我認爲我會更聰明然後.. – James 2014-10-18 23:38:03