[英]Getting PHP variable name as string for many variables
我搜索了許多主題,但到目前為止,還沒有一個主題可以幫助我。
我嘗試了“ 此線程”中的許多選項,但沒有一個是正確的。
我正在為交換機和路由器制作配置生成器,我試圖簡化它,因此,不是為每個接口都配置陣列,而是為每種布局類型都配置數組,並將接口名稱作為變量。 我將網頁發布到腳本,並且將每個帖子的端口布局發布到頁面,每個接口都作為其自己的變量。
即
$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,而不是為下一個台式機返回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
我不確定這是否適合您,但是在下面的示例中,我剛剛創建了一個foreach()
循環來檢查$ints[]
的數組值是否為true。 如果是這樣,則將變量名稱和值添加到$ 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
您無法以嘗試的方式獲取變量名。 相反,如果需要保留var名稱,則應該傳遞變量名稱列表進行查看。 然后,生成內容的函數將僅使用數組中的內容。
像這樣的簡單操作將為您提供變量的值及其名稱($ varname在foreach循環中)。 (我不知道$ file,$ pcarray和$ voiparray的來源,因此它們只是示例函數中的全局變量):
$list = ["fa1", "fa2", "fa3", "fa4", "fa5"];
PutFileContentList($list);
function PutFileContentList(array $list) {
globals $file, $pcarray, $voiparray;
foreach ($list as $varname) {
$line = isset($GLOBALS[$varname]) ? $GLOBALS[$varname] : "";
if ($line == "PC") {
file_put_contents($file, $pcarray . FILE_APPEND);
}
if ($line == "VOIP") {
file_put_contents($file, $voiparray . FILE_APPEND);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.