使用数组的函数不行

时间:2014-06-11 00:08:57

标签: php arrays function

我有功能问题,如果我使用脚本并且没有工作,因为函数工作正常,但如果使用它作为函数没有工作我没有显示正确的值,例如与函数显示我只有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函数中发送的值没有正常工作,如果使用脚本没有函数接收确定

此致

1 个答案:

答案 0 :(得分: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);