3v4l.org

run code in 300+ PHP versions simultaneously
<?php $tests = [ [], // expect null [true, true], // expect true [false, false], // expect false [true, false, true], // expect null [false, true, false], // expect null ]; foreach ($tests as $bools) { echo "\n"; var_export( (function($bools) { $hasTrue = null; foreach ($bools as $b) { $hasTrue |= $b; if ($hasTrue ^ $b) { return null; } } return $b ?? $hasTrue; })($bools) ); }

preferences:
33.83 ms | 404 KiB | 5 Q