echo 3 . print(2) . print(4) . 5 . ‘c’;
输出的结果是什么?why?
回复讨论(解决方案)
还有一个 echo count(“abc”);输出是什么?天呐,我居然搞错了。。
print 返回值是 1
3.print(2) 得到 3.1 即 31
还有一个 echo count(“abc”);输出是什么?天呐,我居然搞错了。。
非数组和非对象,count均返回1.
字符串长度是 strlen()
print 返回值是 1
3.print(2) 得到 3.1 即 31
还有一个 echo count(“abc”);输出是什么?天呐,我居然搞错了。。
非数组和非对象,count均返回1.
字符串长度是 strlen()
echo 3 . print(2) . print(4) . 5 . ‘c’;那整个为啥得到的是:45c2131??有计算优先级?
. 连接运算符,将左右结果连接.
print() 是有返回值的,返回1
其次print不是函数,是语言结构,转换一下看就是
echo 3 . print 2 . print 4 . 5 . ‘c’;
输出 45c 返回 1
输出 2 . 1 返回 1
输出 3 . 1
最终 45c2131
echo 3 . print(2) . print(4) . 5 . ‘c’;那整个为啥得到的是:45c2131??有计算优先级?
不是优先级, “.” 连接的是结果,而print是语言结构,连接结果前先执行了.
echo (3 . print (2 . print (4 . 5 . ‘c’)));
明白了,多谢。。
先输出45c返回1
输入 21返回1
输出3.1
得到45c2131…
谢谢。。
是吗?真的明白了吗?
为什么不是:
先执行 print(2)
再执行 print(4) . 5 . ‘c’
是吗?真的明白了吗?
为什么不是:
先执行 print(2)
再执行 print(4) . 5 . ‘c’
echo 和 print 都是输出右侧结果,结果当中又执行语言,依次右移最先输出print 4 . 5 . ‘c’
是这样一个过程
参照结果,只能是右侧先输出,不然就不对呀。。
$arr =array(0=>1,’aa’=>2,3,4);
foreach($arr as $key=>$val)
{
print($key==”aa” ? 5 : $val);
}
这个为啥输出是:5534?
这个是php的自动转换,’aa’在与0,3,4比较时,会转换成int型的0.