将php函数返回值转换为true / false

时间:2016-01-30 05:35:32

标签: php

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

我有类似的东西:

  $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。但我期待一个简单的演员或类似。

3 个答案:

答案 0 :(得分:1)

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

没有任何演员可以获得你想要的结果。解决问题的一种方法是将您的值传递给此函数:

function stringForBool($bool) {
    return ($bool ? 'true' : 'false');
}

//use like:
echo stringForBool(isReadable($outputDir));

你也可以直接在你的代码中内联这个函数,而不是调用它,但如果你多次使用它,那将会非常重复。

其他答案建议使用json_encode()。虽然这肯定有效(如果你传入一个布尔值),如果你传递的不是truefalse,你就不会得到预期的输出。当然,你可以打电话给json_encode((bool)$yourValue),这会给你你想要的东西,但(在我看来)它更神奇,更不明确。

答案 1 :(得分:0)

你会被困在这样做:

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

在PHP中将bool转换为string始终会将其转换为"""1"

现在,这有点像黑客,但你实际上只能使用json_encode()

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

答案 2 :(得分:0)

这可能有用,

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))