댓글 중첩 루프를 작성할 때 문제가 발생했습니다.
경고: /home/yiliaoba/domains/chaochaoblog.com/public_html/wp-content/themes/chaochao/ comments.php의 foreach()에 잘못된 인수가 제공되었습니다. 49행
알겠습니다. 잘못된 인수, 즉 사용할 수 없는 매개변수가 나타났습니다.
이 문제는 어떻게 발생했나요? 돌아가서 다음과 같은 코드를 찾으세요.
foreach ($comments as $comment) :
이제 $comments가 함수 외부의 변수라는 것을 알 수 있습니다. 그냥 함수에 사용되었습니다. 일반적인 프로그래밍 아이디어에 따르면 함수 외부의 변수는 전역 변수로 간주되어야 하며, 전역 변수인 경우 함수 내에서 호출하는 데 문제가 없습니다.
PHP는 우리의 전통적인 사고 방식에 문제가 있는 것 같습니다. 그렇다면 PHP의 전역 변수는 무엇입니까? 이를 시험해 보기 위해 특별히 코드를 작성했습니다.
1. 전역 정의를 사용하여 외부에 직접 출력:
global $mytext; $mytext=”nihao”; function chao_echo(){ echo $mytext; } chao_echo();
결과: 출력 없음;
2. GLOBALS 배열을 사용하여 출력:
global $mytext; $mytext=”nihao”; function chao_echo(){ echo $GLOBALS['mytext']; } chao_echo();
결과: 전역적으로 함수를 선언합니다. 함수 내 외부 변수:
$mytext=”nihao”; function chao_echo(){ global $mytext; echo $mytext; echo $GLOBALS['mytext']; } chao_echo();
결과: 직접 출력 또는 GLOBALS 전역 배열을 사용하여 출력.
4. 함수의 외부 변수를 매개변수에 전달합니다.
$mytext=”nihao”; function chao_echo($mytext){ echo $mytext; } chao_echo($mytext);
참조
하는 세 가지 방법이 있습니다.1. 함수 외부의 전역 선언과 함수 내부에서 $_GLOBALS 배열 참조를 사용합니다.
2. 함수 내 전역 선언, 함수 내 $_GLOBALS 배열 또는 직접 참조. 3. 함수 호출 시 매개변수를 전달합니다.그러면 루프 중첩 함수의 수정된 버전은 다음과 같습니다
<?php function chao_comment_circle($chao_id,$comments){ ?> <?php foreach ($comments as $comment) > <?php if($comment->comment_parent==$chao_id) > <!-- 子评论 b --> <div class="comment_one_sub"> <?php if (function_exists('get_avatar')) { ?> <div class="gravatar_sub"><?php echo get_avatar($comment->comment_author_email,'32'); ?></div> <?php } ?> <div class="comment_frame_sub"> <div class="comment_author_sub"><a href="<?php echo $comment->comment_author_url; ?>"><?php echo $comment->comment_author; ?></a></div> <div class="comment_reply_sub" onclick="chao_reply('<?php echo $comment->comment_ID; ?>','<?php echo $comment->comment_author; ?>')"><a href="#respond">【回复】</a></div> <div class="comment_date_sub"><?php echo $comment->comment_date; ?> <?php echo $comment->comment_time; ?></div> </div> <div class="comment_text_sub"><?php echo $comment->comment_content; ?></div> <?php chao_comment_circle($comment->comment_ID,$comments); ?> </div> <!-- 子评论 e --> <?php endif ?> <?php endforeach ?> <?php } ?>
$chao_id는 상위 댓글의 ID입니다. 즉, 답글이 아닌 댓글을 먼저 출력하고, 다음에서 답글 출력 함수를 호출해야 합니다. 그것의 끝.
위 내용은 PHP 사용자 정의 함수는 외부 변수를 어떻게 참조합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!