В настоящее время я создаю подобную систему для пользователей, которые публикуют статус. У меня есть следующий код, чтобы отобразить «любит» по каждому из сообщений статуса:Данные массива PHP неверно отображаются
/* GET THE STATUS LIKE DETAILS */
$qryNumLikes = mysqli_query($redoDB, "SELECT likestatUID,likestatMName FROM statLike WHERE likeStatPostID = '".$statRow['statID']."'");
$numLikes = mysqli_num_rows($qryNumLikes);
while($likeRow = $qryNumLikes->fetch_array(MYSQLI_ASSOC)){
$name[] = $likeRow['likestatMName'];
$nameid[] = $likeRow['likestatUID'];
}
if($numLikes > 0){
if($numLikes == 1){
if(in_array($memID, $nameid)){
$showLikes = 'You like this.';
} else {
$showLikes = $name[0].' likes this.';
}
} elseif($numLikes == 2) {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = 'You and '.$names[0].' like this.';
} else {
$showLikes = $name[0].' and '.$name[1].' like this.';
}
} elseif($numLikes == 3) {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = $names[0].', '.$names[1].' and you like this.';
} else {
$showLikes = $name[0].', '.$name[1].' and '.($numLikes - 2).' other like this.';
}
} else {
if(in_array($memID, $nameid)){
if(($key = array_search($memName, $name)) !== false) {
unset($name[$key]);
}
$names = array_values($name);
$showLikes = 'You, '.$names[0].' and '.($numLikes - 2).' others like this.';
} else {
$showLikes = $name[0].', '.$name[1].' and '.($numLikes - 2).' others like this.';
}
}
} else {
$showLikes = $numLikes.' Likes';
}
Статуса Один «понравившиеся» идентификаторы пользователей 1 и 2, а также данные массива следующим образом:
Array ([0] => 1 [1] => 2)
Статус Two является «понравился» по идентификатору пользователя 1 только и данные массива выглядит следующим образом:
Array ([0] => 1 [1] => 2 [2] => 1)
Как вы можете видеть, что это неправильно, и он должен отображать только Array ([0] => 1). Для жизни я не могу понять, почему это происходит. Результатом является то, что, когда пользовательский идентификатор 2 смотрит на отображаемый, он говорит «Вам нравится это», когда он должен читать «User ID 1 Likes this» (название курса).
Может ли кто-нибудь сказать мне, где код происходит не так, пожалуйста?
Большое спасибо.
Вы можете добавить var_dump ($ name); var_dump ($ nameid); между while и if? И дайте нам знать, какой результат, если он все равно вам не поможет :) – Gavriel
@ Gavriel - Спасибо, но я ответил ниже. Это, похоже, устранило проблему. – NOJ75