Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量获取数组值_Php_Variable Variables - Fatal编程技术网

PHP变量获取数组值

PHP变量获取数组值,php,variable-variables,Php,Variable Variables,我正在构建一个条件检查,在这里我传入变量和一个要检查的值。在本例中,变量是一个数组值,但我无法让它正确返回 //happens somewhere else $specialFeature['option1']="on"; $specialFeature['option2']="on"; $specialFeature['option3']="off"; //what I'm trying to do #query a db $row = $result->fetch_array() #

我正在构建一个条件检查,在这里我传入变量和一个要检查的值。在本例中,变量是一个数组值,但我无法让它正确返回

//happens somewhere else
$specialFeature['option1']="on";
$specialFeature['option2']="on";
$specialFeature['option3']="off";

//what I'm trying to do
#query a db
$row = $result->fetch_array()
#results for purpose of demo
#$row['var'] = "specialFeature['option2']";
#$row['val'] = "on";
if($$row['var'] == $row['val']){
    //what i'm expecting
    echo "OK";
}
我的问题是,
$$var
始终为空。我做错了什么?这可能吗?

试试这个:

if(${$var} == $val){
    //what i'm expecting
    echo "OK";
}
试试这个:

if(${$var} == $val){
    //what i'm expecting
    echo "OK";
}
试试这个:

if(${$var} == $val){
    //what i'm expecting
    echo "OK";
}
试试这个:

if(${$var} == $val){
    //what i'm expecting
    echo "OK";
}
从PHP.net: 为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

编辑: 数组索引似乎是问题所在

要拆分变量名,可以使用

preg_match('/(.*)\[\'(.*)\'\]/', $row['var'], $matches);
从PHP.net: 为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

编辑: 数组索引似乎是问题所在

要拆分变量名,可以使用

preg_match('/(.*)\[\'(.*)\'\]/', $row['var'], $matches);
从PHP.net: 为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

编辑: 数组索引似乎是问题所在

要拆分变量名,可以使用

preg_match('/(.*)\[\'(.*)\'\]/', $row['var'], $matches);
从PHP.net: 为了在数组中使用变量,必须解决歧义问题。也就是说,如果您编写$$a[1],那么解析器需要知道您是想使用$a[1]作为变量,还是想使用$$a作为变量,然后使用该变量的[1]索引。解决这种歧义的语法是:第一种情况为${$a[1]},第二种情况为${$a}[1]

编辑: 数组索引似乎是问题所在

要拆分变量名,可以使用

preg_match('/(.*)\[\'(.*)\'\]/', $row['var'], $matches);

这就是你要找的吗

    $var = $ARRAY['myKey3'];
    $val = 3;
     if($var == $val){
     //what i'm expecting
     echo "OK";
           }

这就是你要找的吗

    $var = $ARRAY['myKey3'];
    $val = 3;
     if($var == $val){
     //what i'm expecting
     echo "OK";
           }

这就是你要找的吗

    $var = $ARRAY['myKey3'];
    $val = 3;
     if($var == $val){
     //what i'm expecting
     echo "OK";
           }

这就是你要找的吗

    $var = $ARRAY['myKey3'];
    $val = 3;
     if($var == $val){
     //what i'm expecting
     echo "OK";
           }

使用
$$var
可以得到以下结果:
${“ARRAY['myKey3']”
,因此它被视为一个名为
ARRAY['myKey3']
的变量(该变量不存在,尽管您可以使用
$$var='new value'
创建它,但它与
$ARRAY['myKey3']
不同,因为它们是两个不同的变量)。可能您正在寻找
如果($ARRAY['myKey3']=$val)

使用
$$var
您会得到以下结果:
${“ARRAY['myKey3']”}
,因此它被视为一个名为
ARRAY['myKey3']]的变量
(虽然您可以使用
$$var='newvalue'
创建它,但它不存在,因为它们是两个不同的变量)。可能您正在寻找
如果($ARRAY['myKey3']==$val)

使用
$$var
您会得到以下结果:
$$ARRAY['myKey3']}
,因此它被视为一个名为
ARRAY['myKey3']
的变量(该变量不存在,尽管您可以使用
$$var='new value'
创建它,但它将不同于
$ARRAY['myKey3']
,因为它们将是两个不同的变量)。您可能正在寻找
if($ARRAY['myKey3']=$val)

使用
$$var
您会得到以下结果:
${“ARRAY['myKey3']”
,因此它被视为一个名为
ARRAY['myKey3']
的变量(该变量不存在,尽管您可以使用
$$var='new value'
创建它,但它与
$ARRAY['myKey3']
不同,因为它们是两个不同的变量)。可能您正在寻找
如果($ARRAY['myKey3']==val)

我不确定我所做的是否“正确”,但我通过这样做得到了我想要的结果:

//happens somewhere else
$specialFeature['option1']="on";
$specialFeature['option2']="on";
$specialFeature['option3']="off";

//what I'm trying to do
#query a db
$row = $result->fetch_array()
#results for purpose of demo
#$row['var'] = "specialFeature['option2']";
#$row['val'] = "on";

$var = $row['var'];

if (strpos($var,'[') !== false) {
    $varA = str_split($var,strpos($var,'['));
    $varA[1] = substr($varA[1],1,-1);
    if (strpos($varA[1],"'") !== false) {
        $varA[1] = substr($varA[1],1,-1);
    }
}

if(${$varA[0]}[$varA[1]] == $row['val']){
    //what i'm expecting
    echo "OK";
}

我不确定我所做的是否“正确”,但我通过这样做得到了我想要的结果:

//happens somewhere else
$specialFeature['option1']="on";
$specialFeature['option2']="on";
$specialFeature['option3']="off";

//what I'm trying to do
#query a db
$row = $result->fetch_array()
#results for purpose of demo
#$row['var'] = "specialFeature['option2']";
#$row['val'] = "on";

$var = $row['var'];

if (strpos($var,'[') !== false) {
    $varA = str_split($var,strpos($var,'['));
    $varA[1] = substr($varA[1],1,-1);
    if (strpos($varA[1],"'") !== false) {
        $varA[1] = substr($varA[1],1,-1);
    }
}

if(${$varA[0]}[$varA[1]] == $row['val']){
    //what i'm expecting
    echo "OK";
}

我不确定我所做的是否“正确”,但我通过这样做得到了我想要的结果:

//happens somewhere else
$specialFeature['option1']="on";
$specialFeature['option2']="on";
$specialFeature['option3']="off";

//what I'm trying to do
#query a db
$row = $result->fetch_array()
#results for purpose of demo
#$row['var'] = "specialFeature['option2']";
#$row['val'] = "on";

$var = $row['var'];

if (strpos($var,'[') !== false) {
    $varA = str_split($var,strpos($var,'['));
    $varA[1] = substr($varA[1],1,-1);
    if (strpos($varA[1],"'") !== false) {
        $varA[1] = substr($varA[1],1,-1);
    }
}

if(${$varA[0]}[$varA[1]] == $row['val']){
    //what i'm expecting
    echo "OK";
}

我不确定我所做的是否“正确”,但我通过这样做得到了我想要的结果:

//happens somewhere else
$specialFeature['option1']="on";
$specialFeature['option2']="on";
$specialFeature['option3']="off";

//what I'm trying to do
#query a db
$row = $result->fetch_array()
#results for purpose of demo
#$row['var'] = "specialFeature['option2']";
#$row['val'] = "on";

$var = $row['var'];

if (strpos($var,'[') !== false) {
    $varA = str_split($var,strpos($var,'['));
    $varA[1] = substr($varA[1],1,-1);
    if (strpos($varA[1],"'") !== false) {
        $varA[1] = substr($varA[1],1,-1);
    }
}

if(${$varA[0]}[$varA[1]] == $row['val']){
    //what i'm expecting
    echo "OK";
}

为什么不试试这样简单地调用$var=“$ARRAY['myKey3']”;
$val==$ARRAY['myKey3']”
为什么不试试这样简单地调用$var=“$ARRAY['myKey3']”;
$val==$ARRAY['myKey3']
为什么不试试这样简单地调用$var=“$ARRAY['myKey3']”;
$val=$ARRAY['myKey3']
为什么不这样做呢?只需调用$var=“$ARRAY['myKey3']”;
$val==$ARRAY['myKey3']
是的,您做错了。您正在为条件块赋值,$$用于赋值,该值等于原始变量,但条件只是用于检查值是否为真,因为在本例中,$$var为NULL,因此条件不为真,这就是为什么它什么也不返回的原因。请查看发生了什么此代码为var_dump($$var);是的,您做错了。您正在为条件块赋值,$$用于赋值,该值等于原始变量,但条件只是用于检查值是否为真,因为在本例中,$$var为NULL,因此条件不为真,这就是为什么它什么也不返回的原因。看看这个c发生了什么ode var_dump($$var);是的,您做错了。您正在为条件块分配一个值,$$用于分配一个等于原始变量的值,但条件仅用于检查val