我有一個函數,我可以從中調用多個不同的變量,並生成另一個(動態創建的)返回變量。 一切都好。 (我解釋一下下面這個PHP 5.3例如我的問題)在PHP中動態創建變量偶爾會生成名稱,如「_GET」或「_POST」而不是變量名稱
function showArrayIntersection($ar1, $ar2) {
$dynamicName = array_search($ar1, $GLOBALS) . '_' . array_search($ar2, $GLOBALS);
global ${$dynamicName};
${$dynamicName} = implode(array_values(array_intersect($ar1, $ar2)));
}
$Bankers = [6,7,0,6,5,6,2]; // `[]` is equivalent to `array()` introduced in PHP 5.4
$Bond = [6,7,0,5,0];
$Politicians = [4,6,1,6,4,6,3];
$James = [0,1,0,3,7];
showArrayIntersection($James, $Bond);
showArrayIntersection($Bankers, $Politicians);
echo "Moneysystem: $Bankers_Politicians\n";
echo "Moneypenny : $James_Bond\n";
輸出:
Moneysystem: 666
Moneypenny : 007
這工作的大部分時間很好,但有時只,而不是一個變量名稱,如$ James_Bond我得到像POST _POST或變量名GET _GET,而不是意名的詹姆斯或債券 PHP返回無論是「_GET 「或」_POST「。
自從AbraCadaver充滿懇切地問道:「你在做什麼? 這裏我的解決方案和解釋:
Einacio:我coudn't動態地創建名稱,因爲已經從第一個函數動態到達,所以實際的變量名稱不是真正的名稱。
AbraCadaver指出array_search()不接受數組;不幸的是,爲了簡潔起見,我忽略了我作爲第一個參數傳遞,而不是一個數組,但是從另一個動態創建的變量 - 我不想讓它太複雜,但基本上它是這樣工作的:
function processUsers ($userName , $request2send){
global ${$user.'_'.$request2send};
$url2send = "http...?request=".$request2send ;
...
$returnedValue = receivedDataArray();//example elvis ([0] => Presley);
${$user.'_'.$request2send} = $returnedValue;
}
---現在現在,我得到的根函數的值---
$firstValue = processUsers ("cuteAnimal" , "getName");
// returns: $cuteAnimal_getName = "Mouse"
和
$secondValue = processUsers ("actorRourke" , "getFirstName");
// returns: $actorRourke_getFirstName = "Mickey";
而且現在的無賴 - 需要第一個是第二功能完成:
function combineValues ($firstValue , $secondValue){
global ${$firstValue.'AND'.$secondValue};
${$firstValue.'_'.$secondValue} = $firstValue." ".$secondValue;
}
// returnes $actorRourke_getFirstNameANDcuteAnimal_getName = "Mickey Mouse";
課程的第二功能要複雜得多,需要首先完成, 但我希望你現在能理解,這不是一個數組直接,我傳給而是動態的變量名,我不能僅僅用作「firstValue」,但我需要名字「actorRourke_getFirstName」。 所以AbraCadaver建議使用$ GLOBALS [..]不適用於我,因爲它需要數組。
但是:感謝您的幫助,我希望現在可以向您解釋問題。
你能告訴我們一個例子,它不起作用嗎? – Stoic