Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于此数组中的值从数组中获取数据_Php_Arrays - Fatal编程技术网

Php 基于此数组中的值从数组中获取数据

Php 基于此数组中的值从数组中获取数据,php,arrays,Php,Arrays,我有这种类型的数组: $fruits = array( array( 'fruit' => "Banana", 'color' => "Yellow", 'latinName' => "Banana", 'origin' => "Africa" ), ); 例如,如果我有水果值,如何获得颜色 我正在使用这个结构,因为我想使用这个数组,通过给水果名,颜色

我有这种类型的数组:

$fruits = array(
    array(
        'fruit'       => "Banana", 
        'color'       => "Yellow",
        'latinName'   => "Banana",
        'origin'      => "Africa"
    ),
);
例如,如果我有
水果
值,如何获得
颜色


我正在使用这个结构,因为我想使用这个数组,通过给
水果名
颜色
拉丁名
来获取其他信息。


谢谢。

不确定这是否是最好的方法,但它确实有效(可能还有一些功能,但idk抱歉):

$fruits=数组(
排列(
“水果”=>“香蕉”,
“颜色”=>“黄色”,
“拉丁名”=>“香蕉”,
“来源”=>“非洲”
),
排列(
“水果”=>“苹果”,
“颜色”=>“红色”,
“latinName”=>“Dunno1”,
“来源”=>“Dunno2”
),
排列(
“水果”=>“橙色”,
“颜色”=>“橙色”,
“latinName”=>“Dunno3”,
“来源”=>“Dunno4”
),
);

对于($i=0;$i请查看中的
array\u flip
。虽然我同意您的数据结构使这一操作变得相当笨拙,但此函数可能会缓解一些问题。

似乎是一个非常琐碎的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'];
        }
    }

?>

通过这种方式,您可以使用公共名称访问正确的内部数组,并且可以根据需要使用所有内置的PHP函数来查找/访问键。

我将重新排列您的数组,以便包含水果数据的数组是顶级数组的数组,键是水果名称。例如
array(banana=>array(颜色=>“粉色”、“拉丁名”=>“Banaerous Athra”)
(尽管不确定香蕉是否有拉丁名…).现在,您必须遍历数组,找到包含您引用的水果的子数组,然后在该数组中查找颜色。很好的一点是,我这样构建它是为了使用相同的数组根据不同的数据(水果、颜色、拉丁名或来源)获取值。对于您的解决方案,我需要为每个数据创建一个数组。您的解决方案如何不为每个数据创建一个数组?如果您只有一个数组,没有子级别数组,您如何区分哪个颜色与哪个水果匹配,尤其是在您不能有重复密钥名称的情况下。我希望通过提供水果名称、颜色或t来使用此数组考虑到这一点,也许你可以向我提出一个新的结构?同意-结构很奇怪,但我想的更多的是原始问题“如果你有水果,如何找到颜色”嗨@James,如果答案中缺少引号,建议编辑以改进它而不是留下刺耳的命令没有错ents-事实上,它将以一种有意义的方式为网站做出贡献。等到你的代表变得更高,再玩snarky评论游戏:)你认为下列哪一条评论会给网站增加更多价值:“你的代码将输出至少4个错误。”或者“你忘了在数组键中为复制的代码添加引号。”我只是说,积极而不是消极是件好事:)我所说的既不尖刻也不消极,你犯了一个错误,这是一个有益的、切中要害的、友好的推动。首先,由您来提供工作代码,而不是由其他人来确保您做得正确。我本可以有理由否决,因为你的代码有错误,就像很多人一样。但我没有投反对票,而是友好地推了你一下!显然这还不够好,我应该把你哪里做错了写出来?正如你所说,我会等到我的代表更高,我想我会更聪明…@James好吧,好吧。我可能用“snarky”有点太严厉了——半个小时后,你似乎还在为它生气。我为此道歉。是的,我在复制的代码段中遗漏了引号,是的,有错误。但是一个拼写错误就是一个拼写错误——我们都会制作它们,并且有一些有用的方法来指出它们。在大约600次重复中,您将能够简单地编辑和更正问题/答案。我希望你能利用这个特权,让这个网站对所有人来说都是一个更好的地方。我道歉了,因为我认为这样做是正确的。我不希望我的评论阻止人们以任何形式,任何形式,以积极的方式对网站做出贡献。无论如何,让我们继续前进,去帮助一些人回答他们的问题:)你错过了关键名字周围的引号是什么意思。
<?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"
    )
);