用if语句检查数组值总是返回(输出)false(else)

时间:2016-05-12 13:34:45

标签: php if-statement

我关注数组:

Array
(
    [0] =>  class="amount">€39,00
    [2] =>  class="subscription-details">
    [4] => für
    [5] => 1
    [6] => month
)

我想检查值的第六个元素是否为“月”。

我使用此代码:

print_r($test[6]); //Output month

if($test[6] == 'month'){
    echo 'Alex'; //should output
}else{
    echo 'Ecke'; //will output
}

为什么这段代码会输出“Ecke”而不是“Alex”?

编辑:

var_dump($test[6]) outputs = string(12)

var_export($test[6]) outputs ='month'

var_export($ test)=

<pre>array (
  0 => '<span',
  1 => 'class="amount">&euro;39,00</span>',
  2 => '<span',
  3 => 'class="subscription-details">',
  4 => 'für',
  5 => '1',
  6 => 'month</span>',
)</pre>

2 个答案:

答案 0 :(得分:1)

输出Alex。这是最简单的测试用例,几乎可以按照我的理解重复您的代码。

<?php
$test = [
    0 => 'class="amount">€39,00',
    2 => 'class="subscription-details">',
    4 => 'für',
    5 => 1,
    6 => 'month</span>',
];

var_dump($test[6]);
var_export($test[6]);

if (trim(strip_tags($test[6])) == 'month') {
    echo PHP_EOL.'Alex'.PHP_EOL; //should output
} else {
    echo PHP_EOL.'Ecke'.PHP_EOL; //will output
}

当我运行脚本时,我得到了

string(12) "month</span>"
'month</span>'
Alex

您能否为您的阵列显示var_export的结果。很可能你在单词month中有前导或尾随空格。您可能需要trim字符串,然后将其与“月份”进行比较。

更新:我认为您在提供var_dump结果时已回答了您自己的问题。 $test[6]中的值不是一个月,而是month</span>

我已为此更新了测试并添加了strip_tags功能。这只是为了好玩,并表明您可以轻松删除额外的标签。

答案 1 :(得分:0)

嗯,这似乎是一个问题...

var_dump($test[6]) outputs = string(12)

month不是12个字符。除了month

之外,您可能在该字符串中有一些不可打印的字符