如何放弃打印" 0.000 *"我的代码中的值,但通过其他一切?

时间:2014-12-11 15:06:05

标签: 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
];

foreach ($vars as $var) {
    if (/* ... */)
        print "$var<br>\n";    //print only the "to be printed" values
}

首先,$var != 0失败。 $var !== 0,也失败了。

7 个答案:

答案 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){

}