>  기사  >  백엔드 개발  >  PHP 사용자 정의 함수는 외부 변수를 어떻게 참조합니까?

PHP 사용자 정의 함수는 외부 변수를 어떻게 참조합니까?

伊谢尔伦
伊谢尔伦원래의
2017-06-26 10:53:423272검색

댓글 중첩 루프를 작성할 때 문제가 발생했습니다.
경고: /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);

결과: 출력될 수 있습니다.

요약하자면, PHP에서는 PHP의 함수 외부에서 변수를

참조

하는 세 가지 방법이 있습니다.

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(&#39;get_avatar&#39;)) { ?> <div class="gravatar_sub"><?php echo get_avatar($comment->comment_author_email,&#39;32&#39;); ?></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(&#39;<?php echo $comment->comment_ID; ?>&#39;,&#39;<?php echo $comment->comment_author; ?>&#39;)"><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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.