Bool variable in php

Bool variable in php

While waiting for native support for typed arrays, here are a couple of alternative ways to ensure strong typing of arrays by abusing variadic functions. The performance of these methods is a mystery to the writer and so the responsibility of benchmarking them falls unto the reader.

PHP 5.6 added the splat operator (. ) which is used to unpack arrays to be used as function arguments. PHP 7.0 added scalar type hints. Latter versions of PHP have further improved the type system. With these additions and improvements, it is possible to have a decent support for typed arrays.

function typeArrayNullInt (? int . $arg ): void >

function doSomething (array $ints ): void (function (? int . $arg ) <>)(. $ints );
// Alternatively,
( fn (? int . $arg ) => $arg )(. $ints );
// Or to avoid cluttering memory with too many closures
typeArrayNullInt (. $ints );

function doSomethingElse (? int . $ints ): void /* . */
>

$ints = [ 1 , 2 , 3 , 4 , null ];
doSomething ( $ints );
doSomethingElse (. $ints );
?>

Both methods work with all type declarations. The key idea here is to have the functions throw a runtime error if they encounter a typing violation. The typing method used in doSomethingElse is cleaner of the two but it disallows having any other parameters after the variadic parameter. It also requires the call site to be aware of this typing implementation and unpack the array. The method used in doSomething is messier but it does not require the call site to be aware of the typing method as the unpacking is performed within the function. It is also less ambiguous as the doSomethingElse would also accept n individual parameters where as doSomething only accepts an array. doSomething’s method is also easier to strip away if native typed array support is ever added to PHP. Both of these methods only work for input parameters. An array return value type check would need to take place at the call site.

Читайте также:  To set php in environment variable

If strict_types is not enabled, it may be desirable to return the coerced scalar values from the type check function (e.g. floats and strings become integers) to ensure proper typing.

same data type and same value but first function declare as a argument type declaration and return int(7)
and second fucntion declare as a return type declaration but return int(8).

function argument_type_declaration(int $a, int $b) return $a+$b;
>

function return_type_declaration($a,$b) :int return $a+$b;
>

Источник

Bool variable in php

Variables in PHP are represented by a dollar sign followed by the name of the variable. The variable name is case-sensitive.

Variable names follow the same rules as other labels in PHP. A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$

Note: For our purposes here, a letter is a-z, A-Z, and the bytes from 128 through 255 ( 0x80-0xff ).

Note: $this is a special variable that can’t be assigned. Prior to PHP 7.1.0, indirect assignment (e.g. by using variable variables) was possible.

For information on variable related functions, see the Variable Functions Reference.

$var = ‘Bob’ ;
$Var = ‘Joe’ ;
echo » $var , $Var » ; // outputs «Bob, Joe»

$ 4site = ‘not yet’ ; // invalid; starts with a number
$_4site = ‘not yet’ ; // valid; starts with an underscore
$täyte = ‘mansikka’ ; // valid; ‘ä’ is (Extended) ASCII 228.
?>

By default, variables are always assigned by value. That is to say, when you assign an expression to a variable, the entire value of the original expression is copied into the destination variable. This means, for instance, that after assigning one variable’s value to another, changing one of those variables will have no effect on the other. For more information on this kind of assignment, see the chapter on Expressions.

PHP also offers another way to assign values to variables: assign by reference. This means that the new variable simply references (in other words, «becomes an alias for» or «points to») the original variable. Changes to the new variable affect the original, and vice versa.

To assign by reference, simply prepend an ampersand (&) to the beginning of the variable which is being assigned (the source variable). For instance, the following code snippet outputs ‘ My name is Bob ‘ twice:

$foo = ‘Bob’ ; // Assign the value ‘Bob’ to $foo
$bar = & $foo ; // Reference $foo via $bar.
$bar = «My name is $bar » ; // Alter $bar.
echo $bar ;
echo $foo ; // $foo is altered too.
?>

One important thing to note is that only named variables may be assigned by reference.

$foo = 25 ;
$bar = & $foo ; // This is a valid assignment.
$bar = &( 24 * 7 ); // Invalid; references an unnamed expression.

It is not necessary to initialize variables in PHP however it is a very good practice. Uninitialized variables have a default value of their type depending on the context in which they are used — booleans default to false , integers and floats default to zero, strings (e.g. used in echo ) are set as an empty string and arrays become to an empty array.

Example #1 Default values of uninitialized variables

// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump ( $unset_var );

// Boolean usage; outputs ‘false’ (See ternary operators for more on this syntax)
echo $unset_bool ? «true\n» : «false\n» ;

// String usage; outputs ‘string(3) «abc»‘
$unset_str .= ‘abc’ ;
var_dump ( $unset_str );

// Integer usage; outputs ‘int(25)’
$unset_int += 25 ; // 0 + 25 => 25
var_dump ( $unset_int );

// Float usage; outputs ‘float(1.25)’
$unset_float += 1.25 ;
var_dump ( $unset_float );

// Array usage; outputs array(1) < [3]=>string(3) «def» >
$unset_arr [ 3 ] = «def» ; // array() + array(3 => «def») => array(3 => «def»)
var_dump ( $unset_arr );

// Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)
// Outputs: object(stdClass)#1 (1) < ["foo"]=>string(3) «bar» >
$unset_obj -> foo = ‘bar’ ;
var_dump ( $unset_obj );
?>

Relying on the default value of an uninitialized variable is problematic in the case of including one file into another which uses the same variable name. E_WARNING (prior to PHP 8.0.0, E_NOTICE ) level error is issued in case of working with uninitialized variables, however not in the case of appending elements to the uninitialized array. isset() language construct can be used to detect if a variable has been already initialized.

User Contributed Notes 5 notes

This page should include a note on variable lifecycle:

Before a variable is used, it has no existence. It is unset. It is possible to check if a variable doesn’t exist by using isset(). This returns true provided the variable exists and isn’t set to null. With the exception of null, the value a variable holds plays no part in determining whether a variable is set.

Setting an existing variable to null is a way of unsetting a variable. Another way is variables may be destroyed by using the unset() construct.

print isset( $a ); // $a is not set. Prints false. (Or more accurately prints ».)
$b = 0 ; // isset($b) returns true (or more accurately ‘1’)
$c = array(); // isset($c) returns true
$b = null ; // Now isset($b) returns false;
unset( $c ); // Now isset($c) returns false;
?>

is_null() is an equivalent test to checking that isset() is false.

The first time that a variable is used in a scope, it’s automatically created. After this isset is true. At the point at which it is created it also receives a type according to the context.

$a_bool = true ; // a boolean
$a_str = ‘foo’ ; // a string
?>

If it is used without having been given a value then it is uninitalized and it receives the default value for the type. The default values are the _empty_ values. E.g Booleans default to FALSE, integers and floats default to zero, strings to the empty string », arrays to the empty array.

A variable can be tested for emptiness using empty();

$a = 0 ; //This isset, but is empty
?>

Unset variables are also empty.

empty( $vessel ); // returns true. Also $vessel is unset.
?>

Everything above applies to array elements too.

$item = array();
//Now isset($item) returns true. But isset($item[‘unicorn’]) is false.
//empty($item) is true, and so is empty($item[‘unicorn’]

$item [ ‘unicorn’ ] = » ;
//Now isset($item[‘unicorn’]) is true. And empty($item) is false.
//But empty($item[‘unicorn’]) is still true;

$item [ ‘unicorn’ ] = ‘Pink unicorn’ ;
//isset($item[‘unicorn’]) is still true. And empty($item) is still false.
//But now empty($item[‘unicorn’]) is false;
?>

For arrays, this is important because accessing a non-existent array item can trigger errors; you may want to test arrays and array items for existence with isset before using them.

Источник

Bool variable in php

Much of the confusion about booleans (but not limited to booleans) is the fact that PHP itself automatically makes a type cast or conversion for you, which may NOT be what you want or expect. In most cases, it’s better to provide functions that give your program the exact behavior you want.

function boolNumber ( $bValue = false ) < // returns integer
return ( $bValue ? 1 : 0 );
>

function boolString ( $bValue = false ) < // returns string
return ( $bValue ? ‘true’ : ‘false’ );
>

$a = true ; // boolean value
echo ‘boolean $a AS string = ‘ . boolString ( $a ) . ‘
‘ ; // boolean as a string
echo ‘boolean $a AS number = ‘ . boolNumber ( $a ) . ‘
‘ ; // boolean as a number
echo ‘
‘ ;

$b = ( 45 > 90 ); // boolean value
echo ‘boolean $b AS string = ‘ . boolString ( $b ) . ‘
‘ ; // boolean as a string
echo ‘boolean $b AS number = ‘ . boolNumber ( $b ) . ‘
‘ ; // boolean as a number
echo ‘
‘ ;

$c = boolNumber ( 10 > 8 ) + boolNumber (!( 5 > 10 )); // adding booleans
echo ‘integer $c = ‘ . $c . ‘
‘ ;

?>
Results in the following being printed.

boolean $a AS string = true
boolean $a AS number = 1

boolean $b AS string = false
boolean $b AS number = 0

In other words, if we know what we want out of our program, we can create functions to accommodate. Here, we just wanted ‘manual control’ over numbers and strings, so that PHP doesn’t confuse us.

Источник

PHP Boolean

A boolean value represents a truth value. In other words, a boolean value can be either true or false . PHP uses the bool type to represent boolean values.

To represent boolean literals, you can use the true and false keywords. These keywords are case-insensitive. Therefore, the following are the same as true :

And the following are the same as false :

When you use non-boolean values in a boolean context, e.g., if statement. PHP evaluates that value to a boolean value. The following values evaluate to false :

  • The keyword false
  • The integer zero (0)
  • The floating-point number zero (0.0)
  • The empty string ( » ) and the string «0»
  • The NULL value
  • An empty array, i.e., an array with zero elements

PHP evaluates other values to true .

The following shows how to declare variables that hold Boolean values:

$is_submitted = false; $is_valid = true;Code language: PHP (php)

To check if a value is a Boolean, you can use the built-in function is_bool() . For example:

$is_email_valid = false; echo is_bool($is_email_valid);Code language: PHP (php)

When you use the echo to show a boolean value, it’ll show 1 for true and nothing for false , which is not intuitive. To make it more obvious, you can use the var_dump() function. For example:

 $is_email_valid = false; var_dump($is_email_valid); $is_submitted = true; var_dump($is_submitted);Code language: HTML, XML (xml)
bool(false) bool(true) Code language: JavaScript (javascript)

Summary

  • A boolean value represents a truth value, which is either true or false .
  • PHP evaluates the following values to false: false, 0, 0.0, empty string (“”), “0”, NULL, an empty array; other values are true .

Источник

Оцените статью