有一个数组,它显示了搜索食品名称的餐馆列表,需要将其缩小到独特的结果。 您可以看到此数组可以包含重复的餐馆名称,关键因素是如果餐馆名称匹配但是准备时间不同,则阵列需要分配具有“多选项”值的字符串的准备时间。
数组:
$restaurants = array (
1 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
2 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
3 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
4 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
5 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 15,
),
6 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 10,
),
7 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 20,
),
8 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
9 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
10 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 5,
),
11 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
12 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
13 =>
array (
'restaurant' => 'Alto Burger',
'slug' => 'alto-burger',
'lat' => 45.487302399999997,
'long' => -73.637301199999996,
'distance' => '3.04',
'preparation' => 10,
),
14 =>
array (
'restaurant' => 'Alto Burger',
'slug' => 'alto-burger',
'lat' => 45.487302399999997,
'long' => -73.637301199999996,
'distance' => '3.04',
'preparation' => 10,
),
15 =>
array (
'restaurant' => 'Subway',
'slug' => 'subway1',
'lat' => 45.268204699999998,
'long' => -72.143240399999996,
'distance' => '71.29',
'preparation' => 3,
),
)
此数组显示:
所需的输出
$restaurantsdownsized = array (
1 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 'multi-option',
),
14 =>
array (
'restaurant' => 'Alto Burger',
'slug' => 'alto-burger',
'lat' => 45.487302399999997,
'long' => -73.637301199999996,
'distance' => '3.04',
'preparation' => 10,
),
15 =>
array (
'restaurant' => 'Subway',
'slug' => 'subway1',
'lat' => 45.268204699999998,
'long' => -72.143240399999996,
'distance' => '71.29',
'preparation' => 3,
),
)
然后它需要生成以下div元素,以便将其作为标记添加到谷歌地图。
foreach($restaurantsdownsized as $mp){
echo '<div class="radarmarkers"
data-lat="'.$mp['lat'].'"
data-long="'.$mp['long'].'"
data-title="'.$mp['restaurant'].'"
data-preparation= "'.$mp['preparation'].' '.t('Minutes').'"
data-map-icon= "icon_'.$mp['preparation'].'"
></div>';
}
答案 0 :(得分:1)
我不确定我是否可以回答我自己的问题,但这是我提出的解决方案:
$temprestaurants = $restaurants;
if(count($restaurants) > 1){
$range = range(1, count($restaurants));
foreach($restaurants as $key => $value ){
foreach($range as $x){
if($value['slug']==$temprestaurants[$x]['slug']){
if($temprestaurants[$x]['preparation']!= $value['preparation']){
$temprestaurants[$x]['preparation'] = "multi-option";
}
}
}
}
}
$restaurantsdownsized = array_map("unserialize", array_unique(array_map("serialize",$temprestaurants)));
var_dump($restaurantsdownsized);
产生所需的输出
array(3) {
[1]=>
array(6) {
["restaurant"]=>
string(10) "Chefoncall"
["slug"]=>
string(11) "chefoncall1"
["lat"]=>
float(45.4958692)
["long"]=>
float(-73.575247)
["distance"]=>
string(4) "0.07"
["preparation"]=>
string(12) "multi-option"
}
[13]=>
array(6) {
["restaurant"]=>
string(11) "Alto Burger"
["slug"]=>
string(11) "alto-burger"
["lat"]=>
float(45.4873024)
["long"]=>
float(-73.6373012)
["distance"]=>
string(4) "3.04"
["preparation"]=>
int(10)
}
[15]=>
array(6) {
["restaurant"]=>
string(6) "Subway"
["slug"]=>
string(7) "subway1"
["lat"]=>
float(45.2682047)
["long"]=>
float(-72.1432404)
["distance"]=>
string(5) "71.29"
["preparation"]=>
int(3)
}
}
答案 1 :(得分:0)
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
$restaurants = array (
1 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
2 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
3 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
4 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
5 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 15,
),
6 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 10,
),
7 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 20,
),
8 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
9 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
10 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 5,
),
11 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
12 =>
array (
'restaurant' => 'Chefoncall',
'slug' => 'chefoncall1',
'lat' => 45.495869200000001,
'long' => -73.57524699999999,
'distance' => '0.07',
'preparation' => 0,
),
13 =>
array (
'restaurant' => 'Alto Burger',
'slug' => 'alto-burger',
'lat' => 45.487302399999997,
'long' => -73.637301199999996,
'distance' => '3.04',
'preparation' => 10,
),
14 =>
array (
'restaurant' => 'Alto Burger',
'slug' => 'alto-burger',
'lat' => 45.487302399999997,
'long' => -73.637301199999996,
'distance' => '3.04',
'preparation' => 10,
),
15 =>
array (
'restaurant' => 'Subway',
'slug' => 'subway1',
'lat' => 45.268204699999998,
'long' => -72.143240399999996,
'distance' => '71.29',
'preparation' => 3,
),
);
$restaurants = unique_multidim_array($restaurants,'preparation');
var_dump($restaurants);
在我看来,你可以得到独特的餐厅或独特的准备时间。