Php 带有数组的函数不能很好地工作

Php 带有数组的函数不能很好地工作,php,arrays,function,Php,Arrays,Function,我对函数有问题,如果我使用脚本,没有函数可以正常工作,但是如果使用函数,没有函数可以正常工作,没有正确显示值,例如函数只显示1个值,如果没有函数可以正确显示所有值,我不知道问题是函数内部的数组还是什么 <?php function update($array_1) { $val=explode(","$array_1); foreach ($val as $key=>$value) { $values_db[]="".$key.""; } foreach($_POS

我对函数有问题,如果我使用脚本,没有函数可以正常工作,但是如果使用函数,没有函数可以正常工作,没有正确显示值,例如函数只显示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发送的值无效,如果使用脚本作为非函数接收ok


关于

我的第一个假设是,当您将代码放入函数中时,您正在访问的变量在函数中不再可用(
$values\u db
$values\u 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!']
function update($array_1, &$values_db, &$values_post, &$opt) {
    // ...
}

update("val1,val2", $values_db, $values_post, $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!']
function update($array_1, &$values_db, &$values_post, &$opt) {
    // ...
}

update("val1,val2", $values_db, $values_post, $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!']
function update($array_1, &$values_db, &$values_post, &$opt) {
    // ...
}

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

打字错误?=><代码>$val=explode(“,”,$aaray_1)可能意味着使用
$val=explode(“,”,$array_1)?我在这里写了我的错误,但最重要的是为什么在funcrion之外工作,而在脚本中没有任何内部函数,我现在就放在这里,因为你做过任何调试吗?函数的性能与您期望的有何不同?是的,例如,如果我使用简单脚本no函数,当我从post发送值时,显示公共值,没有公共完美,当在函数中使用时,仅显示一个值,而其他值不显示,脚本可以单独工作,但函数内部不工作,当做