У меня есть интересная проблема, с которой мне нужна помощь.
У меня есть клиент, который использует API Yelp для получения 10 ближайших результатов к точке, используя широту и долготу. Запрос API объединяет «список» категорий вместе, а затем передает его на запрос в Yelp.
Примерно так:
$categories = [ 'pharmacy', 'hospitals', 'firedepartments', 'policedepartments', 'parks', 'restaurants', 'grocery' ];
$list = join($categories, ",");
Когда этот вызов сделан, Yelp, кажется, не возвращает все псевдонимы категории правильно. Но когда каждая категория вызывается отдельно, она возвращает право псевдонима категории.
Поэтому, когда я использую оператор foreach () для зацикливания категорий, вот так:
foreach($categories as $k=>$v){
$resulted = yelp_search($v, $range, $lat, $lon, $num);
$resulted = json_decode($resulted, true);
$result[] = array_merge($result, $resulted);
}
Он добавит его в массив $ result. Но проблема в том, что он добавит только последнюю категорию в список, например, в данном случае «продуктовый». Поэтому, когда функция в javascript выбрана для «ближайшей», она будет показывать только значки продуктов на карте и в списке, а не все, что она возвращает.
Это проблема № 1, проблема № 2 это. В отображаемом списке, поскольку «категория» устанавливается как «ближайшая» к функции в javascript, я должен просмотреть и просмотреть категории в возвращенных данных json и проверить, соответствует ли оно чему-либо в списке.
как это
for (var i = 0; i < count; i++) {
var b = results[category]['businesses'][i];
if(category == "closest"){
ccount = b.categories.length;
for(var m = 0; m < ccount; m++){
console.log(b.categories[m]['alias']);
var alias = cats.includes(b.categories[m]['alias']);
if(alias){
var c = b.categories[m]['alias'];
break;
}
else{
var c = results[category]['category_name'];
}
}
update = update + '<tr><td role="button" class="td_menu" data-category="' + c + '" data-index="' + i + '"><img style="height: 20px; padding-right: 5px;" src="<?php echo get_template_directory_uri(); ?>/images/' + c + '.png"><span style="vertical-align: top;">' + b.name +
'</span></td><td></td><td>' + (b.distance * 0.00062137).toFixed(2) + '</td><td>mi</td></tr>\n';
}
else{
update = update + '<tr><td role="button" class="td_menu" data-category="' + category + '" data-index="' + i + '"><img style="height: 20px; padding-right: 5px;" src="<?php echo get_template_directory_uri(); ?>/images/' + category + '.png"><span style="vertical-align: top;">' + b.name +
'</span></td><td></td><td>' + (b.distance * 0.00062137).toFixed(2) + '</td><td>mi</td></tr>\n';
}
}
Кажется, что вся эта часть работает нормально, потому что она возвращает правильный псевдоним категории (или продуктовый), и значки в списке отображаются. Я подозреваю, что, как только я смогу решить, как решить проблему № 1, проблема № 2 решится сама собой.
Мне нужно некоторое руководство по этому вопросу, пожалуйста. Я потратил 2 дня, пытаясь понять это правильно и показывать правильные значки в списке, а также получать самые близкие данные, чтобы они содержали все псевдонимы в данных.
Любая помощь и понимание очень ценится!
Заранее спасибо.