我已经搜索了很多主题,但没有人帮我解决我的具体需求。
我尝试了This Thread中的许多选项,但没有一个是非常正确的。
我正在为交换机和路由器制作配置生成器, 我试图简化它,所以不是为每个接口配置一个配置数组,我将为每种类型的布局配置配置数组,并将接口名称作为变量。 我有网页发布到脚本,我有页面发布每个帖子的端口布局,每个接口作为自己的变量。
即
$fa1 = "DESKTOP";
$fa2 = "VOIP";
$fa3 = "DESKTOP";
$fa4 = "";
$fa5 = "DESKTOP";
等。我试图使用foreach循环遍历每个接口(如此)
$ints = array($fa1,$fa2,$fa3,$fa4,etc);
foreach ($ints as $line) {
if ($line == "PC") {
file_put_contents($file, $pcarray.FILE_APPEND);
}
if ($line == "VOIP") {
file_put_contents($file,$voiparray.FILE_APPEND);
}
}
将接口设置为数组:
$pcarray = array(
'interface ' .$interface,
'configetc'
);
我需要一个函数来获取接口变量的名称,以便将其分配给$ interface变量。
我迄今为止发现和尝试的所有示例似乎都不兼容类似值的变量。
即。对于上面的内容,大多数会返回fa1用于DESKTOP的所有内容,而不是fa3用于下一个桌面版。
一个不太合适的例子是:
function print_var_name($var) {
foreach($GLOBALS as $var_name => $value) {
if ($value === $var) {
return $var_name;
}
}
return false;
}
这一个,对于每个变量值重复后,第一个只返回第一个变量名。
编辑: 我想要回来的将是:
(as the written array)
interface fa1
standard desktop config
interface fa2
standard voip config
interface fa3
standard desktop config
interface fa5
standard desktop config
目前即将到来的地方:
interface fa1
standard desktop config
interface fa2
standard voip config
interface fa1
standard desktop config
interface fa1
standard desktop config
答案 0 :(得分:2)
我不确定这是不是您的追随者,但在下面的示例中,我刚刚创建了一个foreach()
循环,以检查来自$ints[]
的数组值是否为真正。如果是,则将变量名称和值添加到$ varArr数组。所以新数组看起来像["fa1" => "DESKTOP", "fa2" => "VOIP"]
。然后循环遍历这个新数组并使用Switch比较该值。请注意,$fa4
有意被忽略,但如果需要,可以轻松添加,并使用默认情况进行测试。
$fa1 = "DESKTOP";
$fa2 = "VOIP";
$fa3 = "DESKTOP";
$fa4 = "";
$fa5 = "DESKTOP";
$ints = [$fa1,$fa2,$fa3,$fa4,$fa5];
$varArr; //Variable Name Array
foreach($GLOBALS as $k=>$v) { //Looping through Globals
if(in_array($v, $ints) && $v !== "") { //If value is in $ints array, add to this array
$varArr[$k] = $v;
}
}
foreach ($varArr as $k=>$v) { //Create Interface File
file_put_contents($file, "interface ". $k ."\n", FILE_APPEND);
switch($v) {
case "DESKTOP":
file_put_contents($file, "standard desktop config\n", FILE_APPEND);
break;
case "VOIP":
file_put_contents($file, "standard voip config\n", FILE_APPEND);
break;
}
}
输出
interface fa1
standard desktop config
interface fa2
standard voip config
interface fa3
standard desktop config
interface fa5
standard desktop config
答案 1 :(得分:1)
您无法按照自己的方式获取变量名称。如果需要保留var名称,则应该通过变量名称列表来查看。然后,生成内容的函数将只使用数组中的内容。
像这样简单的东西会给你变量的值和它的名字($ varname在foreach循环中)。 (我不知道$ file,$ pcarray和$ voiparray来自哪里,所以他们只是样本函数中的全局变量):
for cycle