从我的数据库中检索到的结果包含一个包含汽车的数组($resultsCars
)。每辆车的品牌都有一个ID。 Var_dumping阵列的结果如下:PHP:映射数组结果
array(2) {
[0]=>
array(2) {
["brand"]=>
string(36) "2cb4c4d6-b706-e411-8ed9-0050568c4808"
["color"]=>
string(5) "black"
}
[1]=>
array(2) {
["brand"]=>
string(36) "2cb4c4d6-b706-e411-8ed9-0050568c4807"
["color"]=>
string(5) "white"
}
}
我的目标是用品牌的实际名称替换id。为了实现这一点,我将使用一个数组,将每个id映射到相应的汽车名称。 Var_dumping这个阵列($arrData
)结果为以下:
array(3) {
[0]=>
object(some\path\here)#697 (2) {
["id":"some\path\here":private]=>
string(36) "2cb4c4d6-b706-e411-8ed9-0050568c4806"
["name":"some\path\here":private]=>
string(4) "Audi"
}
[1]=>
object(some\path\here)#697 (2) {
["id":"some\path\here":private]=>
string(36) "2cb4c4d6-b706-e411-8ed9-0050568c4807"
["name":"some\path\here":private]=>
string(8) "Mercedes"
}
[2]=>
object(some\path\here)#697 (2) {
["id":"some\path\here":private]=>
string(36) "2cb4c4d6-b706-e411-8ed9-0050568c4808"
["name":"some\path\here":private]=>
string(3) "BMW"
}
}
为了创建基于$resultsCars
,并与品牌标识解决的新阵,我曾尝试下面的代码:
$resultsMapped = [];
foreach ($resultsCars as $result) {
$result['brand'] = array_search($result['brand'], $arrData);
$resultsMapped[] = $result;
}
品牌领域但是在结果数组中,包含布尔值false
。我究竟做错了什么?
问题是'$ arrData'包含的对象(包含你的值)而不是直接包含这些值。我认为array_search不能像这样查看对象。此外,在你的对象中'id'和'name'是'private',你可能不得不使用getter来检查值...可能必须使用自定义函数来搜索'$ arrData' – Random
我没有看到品牌姓名存在于阵列中 –
@karvin。开发者的品牌是'2cb4c4d6-b706-e411-8ed9-0050568c4806',并在$ arrData中加入'id' – Random