一、String转int
字符串与数字相加,字符串先转成int,再计算。
如果将一个字符串强制转换成一个数字.PHP会去搜索这个字符串的开头.
如果开头是数字就转换.如果不是就直接返回0。
var_dump((int)'abc1'); //输出 int 0
echo "<br>";
var_dump((int)'1abc'); //输出 int 1
echo "<br>";
var_dump((int)'2abc'); //输出 int 2
echo "<br>";
var_dump((int)'22abc'); //输出 int 22
echo "<br>";
var_dump((int)'1+5=5'); //输出 int 1
echo "<br>";
//+ 此处为加法运算,字符串2转化为int2,再与int1相加,结果为3
var_dump('2' + 1); //输出 int 3(注意此处是int)
echo "<br>";
//. 的意思是将变量字符串连接。
var_dump('2' . 1); //输出 string '21' (length=2)
echo "<br>";
二、逗号与点号
逗号与点号都是连接字符串, 逗号的效率比点号高。
+ – . //加、减、点号的优先级一致,按照从左到右的的结合方向决定求值顺序。
, //逗号优先级低于上面三个
点号:先计算(计算的值放在前面),再拼接输出。
逗号:先以逗号分割,再分别计算,最后从左往右拼接输出
// .的意思是将变量字符串连接。
/*点号:先计算(计算的值放在前面),再拼接输出,*/
//字符串与数字相加,字符串先转成int,再计算
echo "1+5=" . 5 + 1; //1+5=5与1相加,输出2
echo "<br>";
echo ('1+5=' . 5) + 1; //1+5=5与1相加,输出2
echo "<br>";
echo '1+5=' . 1 + 5; //1+5=5与5相加,输出6
echo "<br>";
echo ('1+5=' . 1) + 5; //1+5=5与5相加,输出6
echo "<br>";
/*逗号:先以逗号分割,再分别计算,最后拼接输出*/
//PHP在echo的时候可以把变量和字符串用,分隔然后输入。
/*逗号分隔开的就相当于是N个参数.也就是说把echo当个函数用.
这样的话.echo会对每个参数先进行计算.最后再进行连接后输出.所以我们用逗号就不存在上面的问题*/
echo "1+5=", 5 + 1; //输出1+5=6
echo "<br>";
echo '1+5=', 1 + 5; //输出1+5=6
echo "<br>";
$a = 'aaa';
$b = 'bbb';
echo $a, $b, 'ccc';//aaabbbccc
//相当于
//echo $a;
//echo $b;
//echo 'ccc';
echo "<br>";
echo $a . $b . 'ccc';//aaabbbccc,从左到右依次拼接
echo "<br>";
函数相关的问题:
示例一:
/*----------------------------------------------------------------------*/
function test()
{
echo "222";
}
echo "111", test(), "333";//111222333//无返回值,错误的写法
echo "<br>";
echo "111" . test() . "333";//222111333
//先计算test输出222,再连接111与test的返回值,然后再连接333,因为test无返回,最后输出:222111333
echo "<br>";
echo "111" . "222" . "333";//111222333
echo "<br>";
/*-------------------------------------------------------------------------*/
function myfunc($argument)
{
echo $argument + 10;//输出
}
$variable = 10;
echo "myfunc($variable)=" . myfunc($variable);
//输出:20myfunc(10)=
//先计算myfunc输出20,再连接myfunc($variable)=与myfunc的返回值,因为myfunc无返回,最后输出:20myfunc(10)=
echo "<br>";
echo "myfunc($variable)=", myfunc($variable);//
//输出:myfunc(10)=20
示例二:
<?php
/*-------------------------------有返回值 函数------------------------------*/
function add1($x, $y)
{
$total = $x + $y;
return $total;
}
echo add1(1, 16);// 17
echo "1 + 16 = " . add1(1, 16);//1 + 16 = 17
//先计算add1(1, 16)=17
//在连接"1 + 16 = " .17
//最后结果:"1 + 16 = 17"
echo "1 + 16 = ", add1(1, 16);//1 + 16 = 17
//先echo "1 + 16 = ",即输出:1 + 16 =
//在echo add1(1, 16),即输出:17
//最后拼接:1+16=17
/*-------------------------------无返回值 函数------------------------------*/
function add2($x, $y)
{
$total = $x + $y;
echo $total;
}
add2(1, 16);//17
echo add2(1, 16);//17,无返回值的函数不可使用返回值,此处错误
echo "1 + 16 = " . add2(1, 16);//171 + 16 =
//先计算add2(1, 16),此处输出17
//在连接"1 + 16 = "与add2函数,因为add2函数无返回值,所以结果输出:1 + 16 =
//最后输出:171 + 16 =
echo "1 + 16 = ", add2(1, 16);//1 + 16 = 17//无返回值的函数不可使用返回值,此处错误
/*-------------------------------有返回值 函数------------------------------*/
function add3($x, $y)
{
$total = $x + $y;
echo $total;
return $total;
}
add3(1, 16);//17
echo add3(1, 16);//1717
//先add3中输出17
//在echo add3的返回值即17;
//最后结果为:1717
echo "1 + 16 = " . add3(1, 16);//171 + 16 = 17
//先计算add3(1, 16),此处输出17,并返回17
//在连接"1 + 16 = "与add3函数的返回值17,结果输出:1 + 16 =17
//最后输出:171 + 16 =17
echo "1 + 16 = ", add3(1, 16);//1 + 16 = 1717
//先算echo "1 + 16 = "
//再算echo add3(1, 16),add3先输出17,再返回17,最后打印echo 17,结果为:1717
//最终显示1+16=1717
?>