2014-10-18 40 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