Menu

← Back to if.*

Error Identifier: if.condNotBoolean

Every error reported by PHPStan has an error identifier. Here’s a list of all error identifiers. In PHPStan Pro you can see the error identifier next to each error and filter errors by their identifiers.

Code example #

<?php declare(strict_types = 1);

function greet(string $name): string
{
	if ($name) { // error: Only booleans are allowed in an if condition, string given.
		return "Hello, $name!";
	}

	return 'Hello, stranger!';
}

This rule is provided by the package phpstan/phpstan-strict-rules.

Why is it reported? #

PHP performs implicit type coercion when evaluating conditions. Values like 0, '', '0', [], and null are considered falsy. This implicit coercion can mask bugs – for example, the string '0' is falsy, which may not be the intended behaviour.

Requiring explicit boolean expressions makes the code’s intent clearer and avoids subtle errors from truthy/falsy coercion.

How to fix it #

Use an explicit comparison that returns a boolean:

 <?php declare(strict_types = 1);
 
 function greet(string $name): string
 {
-	if ($name) {
+	if ($name !== '') {
 		return "Hello, $name!";
 	}

 	return 'Hello, stranger!';
 }

For nullable types, compare against null explicitly:

<?php declare(strict_types = 1);

function process(?array $items): int
{
	if ($items !== null) {
		return count($items);
	}

	return 0;
}

How to ignore this error #

You can use the identifier if.condNotBoolean to ignore this error using a comment:

// @phpstan-ignore if.condNotBoolean
codeThatProducesTheError();

You can also use only the identifier key to ignore all errors of the same type in your configuration file in the ignoreErrors parameter:

parameters:
	ignoreErrors:
		-
			identifier: if.condNotBoolean

Rules that report this error #

  • PHPStan\Rules\BooleansInConditions\BooleanInIfConditionRule [1] phpstan/phpstan-strict-rules

Edit this page on GitHub

Theme
A
© 2026 PHPStan s.r.o.