Іноді бувають і такі завдання, моє рішення під катом, можливо хтось знає більш простий спосіб?

switch (true) {
case (0x7FFF > (int)(0x7FFF+1)): // 2^15-1
define(‘PHP_OS_BIT’, 16);
break;
case (0x7FFFFFFF > (int)(0x7FFFFFFF+1)): // 2^31-1
define(‘PHP_OS_BIT’, 32);
break;
case (0x7FFFFFFFFFFFFFFF > (int)(0x7FFFFFFFFFFFFFFF+1)): // 2^63-1
define(‘PHP_OS_BIT’, 64);
break;
case (0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFff > (int)(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFff+1)): // 2^127-1
define(‘PHP_OS_BIT’, 128);
break;
default:
define(‘PHP_OS_BIT’, 8);
break;
}
var_dump(PHP_OS);
var_dump(PHP_OS_BIT);

Можна використовувати константу PHP_INT_MAX, але є залежність від версії PHP:

switch (PHP_INT_MAX) {
case (0x7FFF): // 2^15-1
define(‘PHP_OS_BIT’, 16);
break;
case (0x7FFFFFFF): // 2^31-1
define(‘PHP_OS_BIT’, 32);
break;
case (0x7FFFFFFFFFFFFFFF): // 2^63-1
define(‘PHP_OS_BIT’, 64);
break;
case (0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFff): // 2^127-1
define(‘PHP_OS_BIT’, 128);
break;
default:
define(‘PHP_OS_BIT’, 8);
break;
}