我有一个包含以下内容的数组:
$array_test = array ("User1"=>"Test1",
"User2"=>"Test2");
第一列应为$ uservalue和函数中的第二个$ testvalue。当我使用单个列数组通过函数中的数组的第一个函数循环时,它工作正常。
我想在以下两个函数中使用这个数组。 数组的第一列应该用作$ uservalue。
function do_show(array $options) {
global $showresult, $master;
$cn = $uservalue;
$config = $options["config"]->value;
// an empty show tag
$show = new SimpleXMLElement("<show/>");
// add the user tag
$user = $show->addChild("user");
// add the "cn" attribute
$user->addAttribute("cn", $cn);
if ($config)
$user->addAttribute("config", "true");
print "cmd: " . htmlspecialchars($show->asXML()) . "\n";
// do it
$showresult = $masterPBX->Admin($show->asXML());
print "result: " . htmlspecialchars($showresult) . "\n";
}
第二个函数,我想使用数组的第二列作为$ testvalue的值:
function do_modify(array $options) {
global $showresult, $master;
$mod = $testvalue;
$modify = new SimpleXMLElement("$showresult");
$user = $modify->user;
$path = explode("/device/hw/", $mod);
$srch = $user;
$nsegments = count($path);
$i = 1;
foreach ($path as $p) {
if ($i == $nsegments) {
// last part, the modification
list($attr, $value) = explode("=", $p);
$srch[$attr] = $value;
} else {
$srch = $srch->$p;
}
$i++;
}
// wrap the modified user tag in to a <modify> tag
$modify = new SimpleXMLElement("<modify>" . $user->asXML() . "</modify>");
print "cmd: " . htmlspecialchars($cmd = $modify->asXML()) . "\n";
$result = $master->Admin($cmd);
print "result: " . htmlspecialchars($result);
}
我怎样才能达到这个目的?我在软件的wiki中找到了这两个函数,我想实现这个...所以我知道使用全局变量不是一个好的选择。
答案 0 :(得分:1)
您可以使用以下代码将数组拆分为两个数组,并将相应的数组传递给相关函数。
$array_test = array ("User1"=>"Test1",
"User2"=>"Test2");
$array_users = array_keys($array_test);
$array_tests = array_values($array_test);
以下是有关array_values和array_keys函数的详细信息的链接。
答案 1 :(得分:0)
将数组作为函数参数传递给两个函数...或使数组全局化。如果要更改原始数组,则通过引用传递(在函数内部进行的数组更改在函数外部可见)。