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