2009-06-26 3 views
2

그래서 다음과 같습니다 :PHP에서 "정의되지 않은 변수"라는 알림을받는 이유는 무엇입니까?

<?php 
    show_form(); 
?> 


<form id="add" method="post" action="addIssue.php"> 
    Name: 
    <?php input_text('name','str_name', $defaults , '1'); ?> 
    <input class="submit" type="submit" value="Begin download" /> 
    <input type="hidden" name="_submitCheck" value="1"/> 
</form> 


<?php 
function show_form($errors = '') 
{ 
    // If form is submitted, get the defaults from submitted parameters 
    if(empty($_POST['_submitCheck']) OR !$_POST['_submitCheck']){ 
     // set our own defaults 
     $defaults = array('str_name' => ''); 

    } else { 
     $defaults = $_POST; 
    } 
} 

// Echo text box 
function input_text($elem_id, $element_name, $values, $tab='') { 
    echo '<input id="'.$elem_id.'" name="'.$element_name.'"'; 
    echo ' tabindex="'.$tab.'" class="text" value="'; 
    echo htmlentities($values[$element_name]) . '" />'; 
} 
?> 

왜 다음과 같은 통지를 받고 있습니까?

Notice: Undefined variable: defaults

답변

3

변수가 작동하려면 전역 변수를 설정해야합니다. show_form 방법의 시작에서

는이 코드를 추가 변수를 반환하고 $ 기본값 = show_form를 사용하는, 이미 지적으로 더 나은 솔루션입니다

global $defaults; 

을 또는().

+0

Arrrrrg ... 네 말이 맞아. 변수 범위. 나는 그것을 보지 못했습니다. –

6

$defaultsshow_form 함수의 범위 내에서 로컬 변수이다. 함수에서 반환하고 첫 번째 코드 줄을 다음과 같이 변경하려고합니다.

$defaults = show_form(); 
관련 문제