У меня такой массив:
$fruits = array( array( 'fruit' => "Banana", 'color' => "Yellow", 'latinName' => "Banana", 'origin' => "Africa" ), );
Как я могу получить color
если у меня есть значение fruit
например?
Я использую эту структуру, так как я хотел бы использовать этот массив, latinName
fruit name
, color
или latinName
чтобы получить другую информацию.
Благодарю.
Взгляните на array_flip
в документах PHP . Хотя я бы согласился с тем, что ваша структура данных делает это довольно неудобным, эта функция может облегчить некоторые из проблем.
Кажется довольно тривиальным заявлением 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']; } } ?>
Edit: В структуре вашего массива нет ничего плохого в этом простом 2d массиве. Во всяком случае, я бы подумал об использовании структуры именования ключей для вашего внешнего массива, что упростило бы использование для вас:
$fruits = array( "Banana" => array( 'color' => "Yellow", 'latinName' => "Banana", 'origin' => "Africa" ) );
Таким образом, вы можете использовать общее имя для доступа к правильному внутреннему массиву – и вы можете использовать все встроенные функции PHP для поиска / доступа к ключам по мере необходимости.
Не уверен, что это лучший способ, но он работает наверняка (может быть, есть и некоторые функции, но 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"]; } }