将 php 函数返回值转换为真/假


Convert php function return values to true/false

我首先提到了这个,但它并没有解决我的问题。

我有这样的东西:

  $message .=   "'n'tWhether $testOutputDir is a directory:" . (!!is_dir($testOutputDir))
                . "'n'tWhether $outputDir is a directory:" . is_dir($outputDir)
                . "'n'tWhether $outputDir is readabale:" . is_readable($outputDir)
                ....

我只想打印如下内容:

       Whether /a is a directory: true
       Whether /b is a directory: true

但它打印如下:

       Whether /a is a directory: 1
       Whether /b is a directory: 1

有什么建议可以解决这个问题吗?

编辑:

我可以检查func == 1 ? TRUE : FALSE.但我期待一个简单的演员阵容或类似的演员阵容。

在 PHP 中,当布尔值转换为字符串时,你会得到'1'(对于true)和''(空字符串,对于false)。如果你想要其他,你必须将布尔值显式转换为字符串。

没有演员可以让你得到你想要的结果。解决问题的一种方法是将值传递到此函数中:

function stringForBool($bool) {
    return ($bool ? 'true' : 'false');
}
//use like:
echo stringForBool(isReadable($outputDir));

您也可以直接在代码中内联此函数,而不是调用它,但是如果您多次使用它,那将变得非常重复。

其他答案建议使用 json_encode() .虽然这肯定有效(如果您传入布尔值),但如果传入不完全truefalse的内容,您将无法获得预期的输出。当然,你可以打电话给json_encode((bool)$yourValue),这会给你你想要的东西,但(在我看来)它更神奇一点,不那么明确。

你会被困在这样做:

is_dir($outputDir) ? 'true' : 'false'

在 PHP 中将bool转换为string总是将其转换为 """1"

现在,这有点黑客,但您实际上可以使用json_encode()

php > var_dump(json_encode(true));
string(4) "true"

这可能有效,

echo json_encode(true);  // string "true"
echo json_encode(false); // string "false"

所以

 $message .=   "'n'tWhether $testOutputDir is a directory:" . json_encode(!!is_dir($testOutputDir))
                . "'n'tWhether $outputDir is a directory:" . json_encode(is_dir($outputDir))
                . "'n'tWhether $outputDir is readabale:" . json_encode(is_readable($outputDir))