2012-06-10 2 views
0

Хорошо, что я здесь новый, и я пытался понять это весь день. У меня есть две функции, одна из которых вызывает другую, но мои функции возвращают только последнее значение, например 29, когда оно должно возвращать несколько значений , Как интересно, как я могу исправить эту проблему, чтобы мои функции возвращали все значения.Функция PHP возвращает непредвиденные значения

Вот мой код PHP.

function parent_comments(){ 
    if(articles_parent_comments_info($_GET['article_id']) !== false){ 
     foreach(articles_parent_comments_info($_GET['article_id']) as $comment_info){ 
      $comment_id = filternum($comment_info['comment_id']); 
      reply_comment_count($comment_id); 
     } 
    } 
} 

function reply_comment_count($parent_id){ 
    if(articles_reply_comments_info($_GET['article_id']) !== false){ 
     foreach(articles_reply_comments_info($_GET['article_id']) as $reply_info){ 
      $comment_id = filternum($reply_info['comment_id']); 
      $reply_id = filternum($reply_info['parent_id']); 

      if($parent_id === $reply_id){ 
       reply_comment_count($comment_id); 
      } 
     } 
    } 

    return $comment_id; 
} 
+0

Этот фрагмент кода не показывает ожиданий массива. Как написано, с идентификаторами ничего не делается. Можете ли вы отредактировать, чтобы опубликовать некоторый фактический код? IE, что такое 'parent_comments()' делать? Он ничего не выводит и ничего не возвращает. 'reply_comment_count()' кажется странно написанным ... он рекурсивный, но ничего не увеличивает счетчик. –

ответ

0

Вы используете рекурсию для возврата $comment_id. Если я понимаю ваши потребности, вы хотите получить каждый идентификатор ответа, связанный с одним идентификатором статьи.

В reply_comment_count вы возвращаете $comment_id, но при его повторном использовании и вы не сохраните предыдущий идентификатор, вы получите только последний.

Если вы хотите получить множество $comment_id вместо одного, я предлагаю вам вернуть массив, в который вы нажимаете $comment_id каждый раз, когда найдете его. Что-то в этом роде:

func parent_comments(){ 
    loop in articles to get comment_id { 
     count_array = reply_comment_count(comment_id, count_array) 
    } 
} 

func reply_comment_count(parent_id, count_array) { 
    loop to get id linked to parent_id { 
     if id is an article { 
      count_array = reply_comment_count(id, count_array) #recursive call 
     } 
     else { 
      count_comment = count comment linked 
      count_array.push(count_comment) 
     } 
    } 
    return count_array # when you return your count_array due to recursive call it will be filled with every count, and not only the last 
} 

Я надеюсь, что этот псевдо-язык понятен для вас. Но поскольку вы возвращаете только последний счет, который вы нашли, у вас будет только этот счет.

+0

Это, вероятно, будет перенесено в SO, где они предпочли бы работать с псевдокодом. Если PHP не является вашим оружием выбора, я мог бы перевести код для вас. – yannis

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