2014-06-11 3 views
0

스크립트를 사용하고 함수가 제대로 작동해도 아무 문제가 없지만 함수로 사용하면 아무런 문제가 없으며 show라는 함수를 사용하여 값을 올바르게 표시 할 수 있습니다. 내게는 단 1 개 값과 함수로 사용하지 마세요 잘 나에게 모든 값을 보여 주면, 내가 문제가 함수 나 어떤배열이 잘 작동하지 않음

<?php 

function update($array_1) 
{ 

$val=explode(","$array_1); 


foreach ($val as $key=>$value) 
{ 
$values_db[]="".$key.""; 
} 

foreach($_POST['opt'] as $key2=>$value2) 
{ 
$values_post[]="".$key2.""; 
} 

$aa=array_diff($values_db,$values_post); 
$bb=array_intersect($values_db,$values_post); 

foreach($aa as $aaa) 
{ 
print "<b>".$aaa." ".$opt[$aaa]."</b><br>"; 
} 

foreach($bb as $bbb) 
{ 
print "".$bbb." ".$_POST['opt'][$bbb]."<br>"; 
} 


} 

update("val1,val2"); 

?> 

문제는 사용과 같은 경우 키우면 내부 배열을 키우면 알고하지는 함수 만, 나는 아무리 잘 기능을 사용하여 스크립트를 사용하는 경우 함수가 잘 작동 POST에서 값을 보내고 어떻게 생각해도

감사합니다

+4

오타? =>'$ val = explode (",", $ aaray_1);''$ val = explode (",", $ array_1); –

+0

필자는 여기서 오류가 발생하지만 가장 이상한 이유는 funcrion 밖에서 작동하고 스크립트 내부에서는 기능을 수행하지 않는다는 것입니다. – user3626084

+1

나는 지금 생각하고 있습니다. 안부 – user3626084

답변

0

첫 번째 가정은 코드를 함수에 넣을 때 함수의 scope ($values_db$values_post) 내부에서 액세스하는 변수를 더 이상 사용할 수 없다는 것입니다. $opt[$aaa]도 참조했는데 $opt을 정의하는 곳을 볼 수 없습니다. 이것은 함수 외부에서 사용하는 다른 변수 일 수 있으며 코드를 더 이상 사용할 수없는 함수로 래핑 할 때 사용할 수 있습니다. 귀하의 경우에는

, 가장 빠른 해결책은 당신이 그들을 액세스 할 수 있도록 글로벌 이러한 변수를 선언하는 것입니다 당신이 평소 함수 내부 :

function update($array_1) { 
    global $values_db, $values_post, $opt; 
    // ... 
} 

다른 옵션을 사용하면 내부에 내부 변수를 사용할 수 있습니다

function update($array_1) { 
    $values_db = array(); 
    $values_db[] = 'world!'; 
    return $values_db; 
} 

$values_db = array('Hello '); 
$values_db = array_merge($values_db, update($your_other_array)); // ['Hello ', 'world!'] 

세 번째 옵션은 그들이 내에서 전역 범위에서 갱신 할 수 있도록 pass those variables by reference이다 : 함수 외부 배열에 추가 기능과 기능에서 return 값, 함수 :

function update($array_1, &$values_db, &$values_post, &$opt) { 
    // ... 
} 

update("val1,val2", $values_db, $values_post, $opt); 
관련 문제