检查是否设置了具有数组值名称的变量

时间:2016-07-19 04:22:09

标签: php arrays

所以我有这个数组:

$myArray = array('myVar', 'myVar75', 'myVar666');

我如何isset检查名为$myVar$myVar75$myVar666的变量是否存在?

将数组的值作为变量名称传递给isset()函数的最明智的方法是什么?

3 个答案:

答案 0 :(得分:1)

只需使用variable variables通过简单的foreach循环测试每个元素:

示例:

$myVar666 = 1; // for example's sake
$myArray = array('myVar', 'myVar75', 'myVar666');
foreach($myArray as $element) {
    if(isset(${$element})) {
        echo $element, ' is already set';
    } else {
        echo $element, ' is not yet set';
        // if not set, do something here
    }
}

应该产生这样的东西:

$myVar is not yet set 
$myVar75 is not yet set 
$myVar666 is already set 

答案 1 :(得分:1)

foreach($myArray as $value){
    if(isset($$value)){
        echo "$value is exist with value : '".$$value."'";
    }
    else{
        "$value is not exist";
    }
}

答案 2 :(得分:1)

你可以通过增加额外的$来做到这一点,如下所示:

$myArray = array("myVar", "myVar75", "myVar666");

if (isset($$myArray[0])) {
    //Content
}

这将检查是否设置了$ myVar。相应地将索引更改为myArray。

考虑PHP的实现(称为变量变量)的方法是字符串的内容在美元符号之后:

$ hi ="你好&#34 ;;

但是如果你把$$ hi,那么$ hi将替换为字符串的内容,所以它变成了$ hello。

$ hi ="你好&#34 ;;

$ hello ="问候&#34 ;;

如果你把$$$ hi,那么$ hi会被替换掉,因此它会变成$$你好,并且$ hello被替换掉,以便它成为$ greetings。

相关问题