我遇到了一些有问题的全案例覆盖布尔表达式的问题:
$vars = [
"0.000",//do not print this value, as it is "not set"
"0.00", //do not print
0.00, //do not print
"TBD", //print
"14.5", //print
14.5 //print
];
foreach ($vars as $var) {
if (/* ... */)
print "$var<br>\n"; //print only the "to be printed" values
}
首先,$var != 0
失败。 $var !== 0
,也失败了。
答案 0 :(得分:4)
尝试使用所有非数字项和任何不等于0的值
if ($var != 0 || !is_numeric($var))
答案 1 :(得分:1)
foreach ($vars as $var) {
if ((is_numeric($var) && floatVal($var) > 0) || (!is_numeric($var) && strlen($var) > 0)) {
print "$var<br>\n"; //print only the "to be printed" values
}
}
答案 2 :(得分:1)
您可以使用array_filter
<?php
$vars = [
"0.000",//do not print this value, as it is "not set"
"0.00", //do not print
0.00, //do not print
"TBD", //print
"14.5", //print
14.5 //print
];
$vars = array_filter($vars,function($a){ return !is_numeric($a) ? $a : (float)$a; });
var_dump($vars);
答案 3 :(得分:0)
这应该适合你:
foreach ($vars as $var) {
if (!preg_match('/^0(\.?)(0*)/', $var, $match))
print "$var<br>\n"; //print only the "to be printed" values
}
答案 4 :(得分:0)
在这里找到了一些东西..
foreach ($vars as $var) {
if (is_numeric($var) && $var != 0 || (is_string($var) && !is_numeric($var)))
print "$var\n";
}
答案 5 :(得分:0)
您可以使用(0?。?0?)
的正则表达式if (!preg_match('/(0?.?0?)/',(string)$var))
答案 6 :(得分:0)
if (!is_numeric($var) || int($var) != 0){
}