百度一下关于php获取变量名的办法都是下面这个函数。但是用了发现有点bug
/**
* 获取变量名
*
* @param $string
* @return $string
*
* $test = "helo";
* $test2 = "helo";
* getVarName($test2);
*/
function getVarName(&$src){
//存储当前变量值
$save = $src;
//存储所有变量值
$allvar = $GLOBALS;
//在函数中不要直拉遍历$GLOBALS,会出现堆栈问题
foreach($allvar as $k=>$v){
//变量值相同,可能不是相同变量,因多个变量的值可能相同
if ($src == $v){
//改变当前变量$src的值
$src = ‘change’;
//如果$GLOBALS[$k]也跟着改变,那就是同一个变量。
if ($src == $GLOBALS[$k]){
//echo "$$k name is $k
";
//还原变量值
$src = $save;
return $k;
}
}
}
}
copy下来后发现这个怎么测试结果有时候对有时候不对,想了很久,终于弄明白,虽然很简单,但是自己还是记录下,希望遇到同样情况的同学注意。
比如:现在我测试
$test2 = "hello";
$countNum=0;
echo getVarName($test2);
//按道理应该输出为”test2“,但是输出的是"countNum",
因为函数中的
if ($src == $v) 这里存在问题 比如$src="hello", $GLOBALS里面有个变量$countNUm=0;
这时在循环的时候判断 if ($src == $v) ,即"hello"==0,比较的结果为true,类型转换的时候“hello“转为整形为0,
然后就退出循环了,得到错误的结果。
一个解决办法就是 if ($src == $v) 改为 if($src===$v),即恒等。
如果我理解错了欢迎您指正,一起进步。
波比源码 » PHP获取变量的变量名的一段代码的bug
levofloxacin ca brand levaquin
avodart 0.5mg usa buy flomax 0.4mg pills ondansetron 4mg pill
aldactone 25mg pill propecia 5mg brand diflucan 200mg for sale
ampicillin 500mg us cephalexin online purchase erythromycin online
sildenafil 100mg without prescription order generic bimatoprost methocarbamol over the counter
suhagra for sale suhagra 50mg us estradiol 1mg brand
oral tadalafil buy tadacip 20mg for sale order voltaren 50mg online
isotretinoin 20mg for sale amoxicillin 1000mg for sale zithromax 250mg cost
anastrozole 1 mg generic Fda approved viagra sildenafil next day
deltasone pill purchase deltasone online sildenafil 50mg sale
tadalafil 5mg kaufen ohne rezept viagra 100mg kaufen viagra 50mg kaufen
purchase provigil acetazolamide 250mg pill buy acetazolamide 250 mg without prescription
buy doxycycline online cheap order lasix sale lasix buy online
altace 5mg ca generic avapro 300mg buy azelastine for sale
order catapres 0.1mg online cheap minocycline cheap spiriva 9mcg pill
buspar 10mg ca brand buspirone 5mg buy oxybutynin 5mg online
order terazosin generic order arava 20mg sale generic azulfidine
fosamax pill ibuprofen order buy famotidine 40mg generic
generic prograf 1mg prograf medication cost urso 150mg
generic zoloft 50mg Buy viagra professional real viagra pills
tadalafil 10mg drug order tadalafil generic amantadine 100mg cost
provera pills order hydrochlorothiazide 25mg online cyproheptadine 4mg cheap
buy modafinil 200mg sale order modafinil 100mg online ivermectin lotion 0.5
isotretinoin 10mg uk deltasone online order order deltasone 10mg online cheap
order nootropil 800mg sale sildenafil for sale sildenafil pills
azithromycin sale order gabapentin 100mg online gabapentin online buy
tadalafil tablets buy tadalafil 10mg pills order viagra 50mg online cheap
cost furosemide 100mg lasix for sale hydroxychloroquine 400mg for sale
metformin 500mg usa generic atorvastatin order cialis 20mg online
norvasc 5mg drug cialis 10mg tablet order generic cialis 20mg
order zyvox 600mg online online black jack bonus casino
metoprolol uk buy vardenafil 10mg levitra generic
term papers for sale play money poker online slots games
order levitra 20mg pills order vardenafil 10mg generic medrol us
dissertation writers online rx pharmacy online viagra sildenafil in usa
order clomid 50mg pills clomid 50mg sale online casino bonus
priligy 90mg for sale priligy 90mg without prescription order levothyroxine online cheap
cheap orlistat 120mg buy diltiazem pills zovirax 800mg cheap
buy cialis order generic clopidogrel 150mg plavix price
order allopurinol 100mg online ezetimibe 10mg without prescription zetia for sale online
motilium generic motilium 10mg for sale buy flexeril 15mg for sale
baclofen price buy tizanidine without prescription brand ketorolac
colchicine without prescription slot machine games chumba casino
order zantac 300mg pills order meloxicam 15mg pill celebrex oral
poker online play play poker online free no sign up blackjack online betting
buy flomax 0.4mg online cheap flomax tablet aldactone 100mg sale
order zocor 10mg order valacyclovir 500mg online cheap order proscar online
order keflex 250mg generic clindamycin brand order erythromycin 500mg
cialis mail order us cheap tadalafil 10mg sildenafil overnight
order desyrel 50mg pills order aurogra generic buy aurogra 100mg without prescription
where can i buy a research paper generic stromectol ivermectin generic name
sildenafil over counter estrace 1mg over the counter order lamotrigine 200mg
prednisone tablet deltasone 10mg pill cheap amoxicillin pill