Как проверить целое число PHP в переменной?

Я включил обзоры Yelp в свой каталог сайтов, где каждое место проведения имеет идентификатор Yelp, возвращающий количество отзывов и общий балл.

После успешного запроса MySQL по всем сведениям о месте я вывожу результаты базы данных, отформатированной для пользователя. Элемент Yelp:

while ($searchresults = mysql_fetch_array($sql_result)) {
if ($yelpID = $searchresults['yelpID']) {
require('yelp.php');
if ( $numreviews > 0 ) {
$yelp = '<img src="'.$ratingimg.'" border="0" /> Read <a href="'.$url.'" target="_blank">'.$numreviews.' reviews</a> on <a href="http://www.tkqlhce.com/click-7842347-10756740-1314724701000" target="_blank"><img src="graphics/yelp_logo_50x25.png" border="0" /></a><br />';
} else {
$yelp = '';
}
} //END if ($yelpID = $searchresults['yelpID']) {
} //END while ($searchresults = mysql_fetch_array($sql_result)) {

Файл yelp.php возвращает:

$yrating = $result->rating;
$numreviews = $result->review_count;
$ratingimg = $result->rating_img_url;
$url = $result->url;

Если у места есть идентификатор Yelp и один или несколько обзоров, то вывод отображается правильно, но если у места нет идентификатора Yelp или нулевых обзоров, тогда он отображает номер обзора Yelp предыдущего места.

Я проверил тип переменной $ numreviews, и это целое число.
До сих пор я пробовал несколько вариантов оператора «if ($ numreviews> 0)», например, проверял его на> = 1,! $ Numreviews и т. Д., Также преобразовывал целое число в строку и сравнивал его с другими строками.
Ошибок нет, и печать всех возвращаемых переменных дает правильное количество проверок для каждого свойства, а объекты, не имеющие идентификатора, или отзывы, не возвращающие ничего (в отличие от нуля). Я также сравнил это напрямую с $ result-> review_count с той же проблемой.

Есть ли лучший способ сделать сравнение или лучший формат переменной для работы, чтобы получить правильный результат?

РЕДАКТИРОВАТЬ:
Заявление if ($yelpID = $searchresults['yelpID']) { не работает как следует. Он идентичен другим операторам в файле, проверяет содержимое строки, которая корректно работает для заданной переменной, например, $ fbID = $ searchresults [‘fbID’] и т. д.
Когда я изменился require('yelp.php'); to require_once (‘yelp.php’); все выходные данные объекта изменились на показ только первого повторного результата. Просматривая выводимые места, ошибка появляется на первом месте после успешного результата, что заставляет меня думать, что в файле yelp.php присутствует распространенный фрагмент кода, вызывающий if ($yelpID = $searchresults['yelpID']) { игнорироваться до тех пор, пока не будет найден положительный результат (yelpID в БД), т. е. каждое место проведения правильно отображается с количеством рев, пока не будет найдено пустое место. Затем отображается количество отзывов предыдущих мест, и это продолжается для каждого пустого места, пока место не будет найдено с идентификатором yelpID, когда оно снова покажет правильный номер. Ошибка повторяется на выходе следующего объекта без идентификатора yelpID и так далее.

Пример ошибочного вывода: (строка 1 — это var_dump)
строка (23) «bayview-hotel-bushmills»
Отель Бэйвью
Читайте 3 отзыва на тявкать

Benedicts
Прочитайте 3 отзыва о yelp (обратите внимание, что вывод var_dump отсутствует, эта ссылка содержит URL-адрес для записи Bayview Hotel выше)

Строка (31) «Бушмиллс-Инн-Отель-Бушмиллс-2»
Бушмиллс Инн Отель
Читайте 7 отзывов на тявкать

Я подозреваю, что это будет новый вопрос, а не загромождать / запутывать этот вопрос дальше?

Конец редактирования

Примечание: я знаю о необходимости обновления до mysqli, но у меня есть тысячи строк устаревшего кода для обновления. На данный момент я работаю над функциональностью, прежде чем рассматривать код для лучшей практики.

1

Решение

Поскольку yelp.php является своего рода черным ящиком; лучшим объяснением этого поведения будет то, что он устанавливает эти переменные, только если находит совпадение. Обновление вашего кода до этого должно исправить это:

unset($yrating, $numreviews, $ratingimg, $url);
require('yelp.php');

Я также заметил это своеобразное выражение if, понимаете ли вы, что это задание или это ошибка копирования / вставки? Если вы хотите проверить (вот что если для)

if ($yelpID == $searchresults['yelpID']) {
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]