我需要能够匹配数组,基于行值的实例,并且只返回1结果。
我不确定我的措辞是否正确,所以让我解释一下。
例如,假设我有两个数组
$people = array(
array(
'name' => 'Joe',
'DOB' => '01/01/1990'
),
array(
'name' => 'John',
'DOB' => '01/01/1990'
),
array(
'name' => 'Jane',
'DOB' => '01/01/1990'
)
);
$sales = array(
array(
'name' => 'Car',
'price' => '1000.00',
'note' => 'This sale was made by Joe Bloggs'
),
array(
'name' => 'Car 2',
'price' => '2000.00',
'note' => 'Joe Bloggs sold this car today'
),
array(
'name' => 'Car 3',
'price' => '3000.00'
'note' => 'Jane Smith sold our most expensive car'
)
);
foreach($people as $personKey => $person){
foreach($sales as $saleKey => $sale){
if($sale['name'] == $person['name']){
if($sale['price'] > 1000.00){
$person[$personKey]['highestSale'] == $saleKey;
} else {
$person[$personKey]['highestSale'] == $saleKey;
}
}
}
}我希望能够运行foreach循环,但是使用它可以实现两件事。
$sales['seller']字符串并匹配它,如果它包含$people['name'] (乔将与Joe匹配)。if($sale['price'] > 1000.00)是真的,退出person循环的这个实例,然后转到下一个人(每个人只返回一个结果/匹配);现在它还会回来
“乔的最高销售额是2000.00英镑”
“乔的最高销售额是1000.00英镑”
“简的最高销售额是3000.00英镑”
“约翰的最高售价是Gb0.00”
在运行if语句的循环中,如果if语句为true,则需要它退出当前循环并移到下一行,因此我的结果将改为如下所示。
“乔的最高销售额是2000.00英镑”
“简的最高销售额是3000.00英镑”
“约翰的最高售价是Gb0.00”
我很抱歉,如果这没有道理,这是很难解释它是什么,我正在努力实现!如果有什么需要重新解释的话,请问。
发布于 2018-01-17 17:00:25
// Collect names
$person = array_fill_keys(array_column($people, 'name'), [0]);
// Add all sales to each seller
foreach($sales as $saleKey => $sale){
if($sale['price'] > 1000.00) {
$person[explode(' ', $sale['seller'])[0]][] = $sale['price'];
}
}
// Print names and max value
foreach($person as $k=>$v) {
echo $k ."'s highest sale is £" . max($v) ."<br>\n";
}https://stackoverflow.com/questions/48306050
复制相似问题