我与国家/地区的阵列是:
$cars = array(
['brand' => 'bmw', 'place_1' => 'Munich', 'place_2' => 'Cologne'],
['brand' => 'vw', 'place_1' => 'Berlin', 'place_2' => 'Kopenhagen'],
['brand' => 'hyndai', 'place_1' => 'Miami', 'place_2' => 'Newyork'],
);
我可以使用此命令选择名称:$ cars [1] [' place_2'] nr。 1是阵列中的位置,但我需要"品牌"因为这些值是动态的。
我需要这样的内容:$cars['brand' => 'bmw']['place_2']
或$cars->brand['bmw']['place2']
,但语法不正确。
如何通过代码获取名称,例如来自品牌 bmw的 place2 ,我认为我的数组是正确的,我只需要真正的选择?
我之前的消息来源是:
PHP - find entry by object property from a array of objects
How to search in array of std object (array of object) using in_array php function?
Reference PHP array by multiple indexes
这些示例中的一些有效,但没有人像选择那样,是否可以在数组中使用?
答案 0 :(得分:0)
将您的品牌用作数组键,而不是使用数字数组索引。
像这样的东西
$cars = [
'bmw' => ['place_1' => 'Munich', 'place_2' => 'Cologne'],
'vw' => ['brand' => 'vw', 'place_1' => 'Berlin', 'place_2' => 'Kopenhagen'],
'hyndai' => ['brand' => 'hyndai', 'place_1' => 'Miami', 'place_2' => 'Newyork'],
];
然后您可以按照以下方式访问变量:$cars['bmw']['place_1']
答案 1 :(得分:0)
未经过测试,但有类似的内容
function arraySelect($arr,$brand){
$selection=[];
foreach($arr as $a){
if($a["brand"]=$brand{
array_push($selection,$a);
}
}
return $selection;
}
答案 2 :(得分:0)
如果您没有机会像@Daniel建议的那样重建阵列,那么您必须迭代它,如下所示:
$brand_to_find = 'bmw';
$key_to_select = 'place_2';
foreach ($cars as $car) {
if ($car['brand'] == $brand_to_find) {
echo $car[$key_to_select];
// if you're sure that will be no
// more `bmw` in your array - break
break;
}
}
全部包含在一个函数中:
function findPlaceByBrand($cars, $brand_to_find, $key_to_select)
{
$result = '';
foreach ($cars as $car) {
if ($car['brand'] == $brand_to_find) {
$result = $car[$key_to_select];
// if you're sure that will be no
// more `bmw` in your array - break
break;
}
}
return $result;
}
echo findPlaceByBrand($cars, 'bmw', 'place_2'); // Cologne
echo findPlaceByBrand($cars, 'vw', 'place_1'); // Berlin
echo findPlaceByBrand($cars, 'honda', 'place_1'); // empty string