我关注数组:
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">€39,00</span>',
2 => '<span',
3 => 'class="subscription-details">',
4 => 'für',
5 => '1',
6 => 'month</span>',
)</pre>
答案 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