2014-06-11 40 views
0

我有問題的功能,如果我使用腳本,沒有工作的功能工作正常,但如果使用它作爲功能沒有工作我,沒有顯示值的權利,例如功能顯示我只有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"); 

?> 

問題it's如果用作陣列it's函數只,我認爲如果howewer我發送的值在POST函數沒有工作正常,如果使用腳本作爲沒有功能收到好的

關注

+4

錯字? =>'$ val = explode(「,」,$ aaray_1);'可能意思是使用'$ val = explode(「,」,$ array_1);'? –

+0

我在這裏寫的錯誤是我的,但最重要的是爲什麼在函數外面工作,沒有裏面的函數腳本 – user3626084

+1

我現在就放,關於 – user3626084

回答

0

我的第一個假設是,當您將代碼放入函數中時,您正在訪問的變量在函數的scope$values_db$values_post)中不再可用。你也參考了$opt[$aaa],我看不到你在哪裏定義$opt。這可能是您在函數外部使用的另一個變量,當您將代碼包裝到函數中時,它將不再可用。

在你的情況,最快的解決辦法是將這些變量聲明爲全局,這樣就可以訪問它們,你通常會在函數內部:

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

其他選項,你可以使用裏面的內部變量功能和return從函數的值,將其添加到您的陣列功能外:

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,使他們能夠在全球範圍內,從更新功能:

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

update("val1,val2", $values_db, $values_post, $opt);