如果它们存在于多维数组中,我需要能够交换给定的值。
$cars = array
(
array("Volvo", "Silver", "Silver Metallic"),
array("BMW", "Red", "Sunset Red")
);
例如,如果我在对象中给出以下值:
$myobject->make = "Volvo";
$myobject->color = "Silver Metallic";
我需要使用上面的数组返回
银
不确定如何将它们全部插入。
echo $cars[0][$myobject->make]...
答案 0 :(得分:3)
$cars = [
['Volvo', 'Silver', 'Silver Metallic'],
['BMW', 'Red', 'Sunset Red'],
];
$make = 'Volvo';
$color = 'Silver Metallic';
$result = NULL;
foreach ($cars as $c) {
if ($c[0] === $make && $c[2] === $color) {
$result = $c[1];
break;
}
}
if ($result !== NULL) {
echo "found color: ".$result;
}
答案 1 :(得分:0)
根据此阵列的设置方式,您可以执行类似这样的操作
$key = array_search('Silver Metallic', array_column($cars, '2'));
在您的示例中,$key
为0
,因此您可以执行类似
echo 'Color is ' . $cars[$key][1];
不像foreach
那样具有可扩展性,但它可以用于像这样的有限数据子集
答案 2 :(得分:0)
在这里,您可以将搜索数据作为数组传递给函数,并将任何一个字段保留为空字符串''
...函数将返回缺少的字段。
<?php
$cars = array(
array("Volvo", "Silver", "Silver Metallic"),
array("BMW", "Red", "Sunset Red")
);
function getSpecificValue($cars, $data)
{
foreach ($cars as $car) {
if ($data['make'] === '') {
if ($car[1] === $data['color'] && $car[2] === $data['color_name']) {
return $car[0];
}
} elseif ($data['color'] === '') {
if ($car[0] === $data['make'] && $car[2] === $data['color_name']) {
return $car[1];
}
} elseif ($data['color_name'] === '') {
if ($car[0] === $data['make'] && $car[1] === $data['color']) {
return $car[2];
}
}
}
}
$data = [
'make' => 'BMW',
'color' => 'Red',
'color_name' => '',
];
$result = getSpecificValue($cars, $data);
var_dump($result);