一个基础问题,以前都没试过。

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.

Posted in 未分类