2016-01-10 2 views
-1

В настоящее время я создаю подобную систему для пользователей, которые публикуют статус. У меня есть следующий код, чтобы отобразить «любит» по каждому из сообщений статуса:Данные массива 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» (название курса).

Может ли кто-нибудь сказать мне, где код происходит не так, пожалуйста?

Большое спасибо.

+0

Вы можете добавить var_dump ($ name); var_dump ($ nameid); между while и if? И дайте нам знать, какой результат, если он все равно вам не поможет :) – Gavriel

+0

@ Gavriel - Спасибо, но я ответил ниже. Это, похоже, устранило проблему. – NOJ75

ответ

0

Фигурные это. Мне просто нужно объявлять массивы первой. (пытается выяснить это в течение нескольких часов, а затем добиться успеха после размещения здесь, типичный).

$name = array(); 
$nameid = array(); 

Добавлено, что перед циклом while.

Смежные вопросы