Type juggling is PHP converting a value to another type automatically, based on the context it is used in. An arithmetic operator needs numbers, so a numeric string becomes a number.
$str = "10";
$num = 5;
echo $str + $num; // 15 (string converted to integer)
It is convenient, but it can give unexpected results. Since PHP 8, a string that is not numeric at all, such as "abc", throws a TypeError in arithmetic. A string with a numeric start, such as "10 apples", still works but raises a warning.
To avoid surprises, use strict comparison with === and add type declarations to parameters and return values.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓