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