我有这种类型的数组:
$fruits = array(
array(
'fruit' => "Banana",
'color' => "Yellow",
'latinName' => "Banana",
'origin' => "Africa"
),
);
如果我有color
值,如何获得fruit
?
我正在使用此结构,因为我想使用此数组,通过提供fruit name
,color
或latinName
来获取其他信息。
感谢。
答案 0 :(得分:0)
不确定这是否是最好的方式,但它确实有效(也许还有一些功能,但是对不起):
$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"];
}
}
答案 1 :(得分:0)
查看PHP docs中的array_flip
。虽然我同意你的数据结构使这个相当尴尬,但这个功能可能会缓解一些问题。
答案 2 :(得分: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'];
}
}
?>
编辑:在数组的结构上,这个简单的2d数组没有任何问题。如果有的话,我会考虑为你的外部数组使用一个关键的命名结构,这可能会让你更容易使用:
$fruits = array(
"Banana" =>
array(
'color' => "Yellow",
'latinName' => "Banana",
'origin' => "Africa"
)
);
然后,您可以使用公共名称访问正确的内部数组 - 并且您可以根据需要使用所有内置的PHP函数来查找/访问密钥。