Php in_array()函数不起作用

时间:2015-05-27 09:44:16

标签: php

天哪,伙计们, 我有这段代码:

$_SESSION['product'] value is(I var_dump it for you): array(2) {
[0]=>   string(51) "869-Satin bridal bouquet model "Ocean Sunset"-F0036"   
[1]=>   string(47) "876-Satin Bridal bouquet model "Mexicana"-F0039" 
} 
$sproduct="876-Satin Bridal bouquet model "Mexicana"-F0039";
    if (in_array($sproduct, $_SESSION['product'])){
    echo 'aaaaaaaaaaaa';exit();
    }

为什么它不起作用?是否可能由于未配置服务器设置而导致此问题?感谢

3 个答案:

答案 0 :(得分:0)

试试这个:

$sproduct='"876-Satin Bridal bouquet model "Mexicana"-F0039"';
if (in_array($sproduct, $_SESSION['product']))
{
    echo 'aaaaaaaaaaaa';exit();
}

答案 1 :(得分:0)

尝试转义引号

像这样

$_SESSION['product'] = array(
  0=> "869-Satin bridal bouquet model \"Ocean Sunset\"-F0036",  

  1=> "876-Satin Bridal bouquet model \"Mexicana\"-F0039" 
);
$sproduct="876-Satin Bridal bouquet model \"Mexicana\"-F0039";
if (in_array($sproduct, $_SESSION['product'])){
  echo 'aaaaaaaaaaaa';exit();
}

答案 2 :(得分:0)

我假设您在问题中显示的$ _SESSION是会话变量的var_dump,而不是您如何定义数组(如果您定义数组的方式如何,您应该学习如何正确定义它们)。

您的$sproduct字符串变量定义错误。

在PHP中,由双引号定义的字符串不能包含没有转义反斜杠()的双引号。

代表:

$s = "foo \"bar\" foo bar"; 

或者您可以使用单引号。

$s = 'foo "bar" foo bar';

使用单引号更有效,因为双引号需要更长的处理时间,因为PHP解析器必须提前读取整个字符串以检测内部的任何变量并将其连接起来。