‘壹’ php 只设计加法计算器
有几处错误点
1 表单无法提交,因为最后一个input的类型是button,form没有提交
2$_post["num2"]写错,应该是$_POST["num2"],要注意变量的大小写
3 两个加数的input类型错误,应该是text,不是test,这应该是粗心导致,要注意
修正代码如下
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<metahttp-equiv="X-UA-Compatible"content="IE=edge">
<title>PageTitle</title>
<metaname="viewport"content="width=device-width,initial-scale=1">
<linkrel="stylesheet"type="text/css"media="screen"href="main.css"/>
<scriptsrc="main.js"></script>
</head>
<body>
<?php
$fuaho=$_POST["add"];
$sum="";
if($fuaho=="+"){
$num1=$_POST["num1"];
$num2=$_POST["num2"];
$sum=$num1+$num2;
echo$sum;
}
?>
<formmethod="post">
<inputtype="text"name="num1"value="<?phpecho$num1;?>">
<inputtype="text"name="num2"value="<?phpecho$num2;?>">
<inputtype="text"name="num3"value="<?phpecho$sum;?>">
<inputtype="submit"name="add"value="+">
</form>
</body>
</html>
建议
写php会设计到很多html和javascrip基础知识,特别是form相关的,可以去补补这方面的知识
‘贰’ php 甯哥敤bc鍑芥暟
鎺㈢储PHP涓镄勫己澶ц$畻宸ュ叿锛歜c鍑芥暟闆
鍦≒HP镄勪笘鐣岄噷锛bcadd灏卞儚鏄涓浣岖簿瀵嗙殑璁$畻鍣锛屽畠涓烘垜浠鎻愪緵浜嗕袱涓浠绘剰绮惧害鏁板瓧涔嬮棿镞犳瘆绮惧嗳镄勫姞娉曡繍绠楋纴镞犺烘槸寰灏忕殑鏁板瓧杩樻槸澶╂枃鏁板瓧锛岄兘鑳借交𨱒惧簲瀵广
bcsub鍒欐壆婕旂潃鍑忔硶涓揿剁殑瑙掕壊锛岀‘淇濇疮涓涓缁嗗井镄勫噺娉曟搷浣滈兘鑳藉缑鍒板嗳纭镄勭粨鏋滐纴镞犺烘槸鍟嗕笟璁$畻杩樻槸绉戝﹁$畻锛屽畠閮借兘鑳滀换链変綑銆
涔樻硶浠诲姟灏变氦缁bcmul锛屽畠鑳藉熻繘琛岄珮绮惧害镄勪箻娉曡繍绠楋纴镞犺烘槸澶嶆潅镄勫叕寮忚$畻杩樻槸澶ц勬ā鏁版嵁澶勭悊锛岄兘鑳戒缭鎸佽$畻镄勭簿纭镐с
瀵逛簬闄ゆ硶锛bcdiv鏄涓嶅彲鎴栫己镄勪紮浼达纴镞犺洪溃瀵圭殑鏄鏅阃氭暟瀛楄缮鏄闇瑕佺簿纭鍒嗗壊镄勬暟鍊硷纴瀹冮兘鑳界粰鍑虹簿鍑嗙殑鍟嗗拰浣欐暟銆
bcpow鍒欐槸涓涓锷熻兘寮哄ぇ镄勫嚱鏁帮纴瀹冭兘澶熻交𨱒惧湴杩涜屼换镒忕簿搴︾殑涔樻柟杩愮畻锛屼负浣犵殑浠g爜璧嬩篑浜嗘棤灏界殑璁$畻鍙鑳芥с
褰挞渶瑕佹垒鍒版ā杩愮畻镄勭瓟妗堟椂锛bcmod濡傚悓涓涓绁炵樼殑瀵嗙爜镰磋疟钥咃纴涓烘垜浠鎻绀轰简鏁拌轰腑镄勫囧欎笘鐣岋纴阃氲繃姹备綑鏁帮纴甯锷╂垜浠鐞呜В镟存繁灞傛$殑鏁板﹁勫緥銆
钥屽綋阆囧埌姣旇缉涓や釜楂樼簿搴︽暟鍊肩殑浠诲姟镞讹纴bccomp灏卞儚涓涓鍏姝g殑瑁佸垽锛屽畠浼氲繑锲炰竴涓鏁存暟缁撴灉锛屽憡璇変綘鍝涓鏂规洿澶ф垨涓よ呯浉绛夛纴璁╂瘆杈冩搷浣滃彉寰楃亩鍗曟槑浜嗐
鍦ㄥ勭悊鏁拌洪梾棰樻椂锛bcpowmod镟存槸涓嶅彲鎴栫己镄勫缑锷涘姪镓嬶纴瀹冭兘澶熸墽琛岄珮绮惧害镄勪箻鏂瑰苟姹傛ā杩愮畻锛屼负浣犵殑绠楁硶璁捐″炴坊寮哄ぇ锷ㄥ姏銆
链钖庯纴bcscale灏卞儚涓涓绮剧粏镄勮皟阔冲笀锛屽畠鑳藉熻剧疆bc鏁板﹀嚱鏁扮殑榛樿ゅ皬鏁扮偣淇濈暀浣嶆暟锛岀‘淇濇疮涓鍦鸿$畻閮借兘锻堢幇鍑烘渶绮剧‘镄勯煶绗︺
‘叁’ PHP一道选择题
答案: C
解释:
在php语言里,对于数字式字符与数字如何参与运算,在具体情况下会视情来确定,请比较以下代码:
echo "3+4+5";结果:3+4+5
为什么会1+2+"3+4+5"结果会是6呢?
echo这个函数(或说是指令),其后跟的参数可以是字符串,也可以是需要运算的表达式,当出现:
echo "3+4+5";echo会认为这是个字符串
而echo 1+2+"3+4+5";echo会认为这是个表达式,所以会对这个表达式进行运算。
在这个运算过程中,1+2等于3,那么为什么"3+4+5"为什么会等于3呢?因为,在php中,对于运算式中,不同数据类型的数据在参与数据时,php会进行数据转换,以尽量确保使表达式成功运行,在"3+4+5"前面的运算符是 + ,那么,php会将"3+4+5"当作数值类型,此时会隐式地进行数据类型的转换,将这个字符串转换成数值,而"3+4+5"转换成数值的结果就是3,所以,整个表达式的结果是:1+2+3 = 6。
为更好的理解,作为对比,你可以参考以下代码:
echo 1+2 . "3+4+5";
结果:
33+4+5
‘肆’ 一道简单PHP题!
当echo中遇到+号(其他数学运算符号也一样),它会试图把+号两边的表达式(可以是字符串也可以是数值)转换为数值后再进行加法运算,这样
echo "a" . 1 + 3 . "5";
就相当于
echo "a1" + "35";
而"a1"无法转换为数值,php就自动按0处理,这样就相当于
echo 0 + 35;
所以最终的输出结果为35
‘伍’ 关于php 位运算符的问题
这个涉及到系统底层,WEB开发中几乎没用到,知道下有这个东西就好了。底层的东西解释总是简单不了的。
变量在内存中的存放都是二进制数字。整数在32位系统上是占用4字节,一个字节是8位,也就是32位,位运算就是位级的运算操作了。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
假定变量 $a 的值是 3,$b 的值是 2。
那么 $a 在内存中的存放的格式是:
00000000 00000000 00000000 00000011
每执行一次左移,都将所有的位向左移动,右边补零,左边超过的舍弃。
所以 $a 左移 2 得到的是:
00000000 00000000 00000000 00011000
也就是 12。相当于 3 × 2 × 2 = 12。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
假定变量 $a 的值是 24,$b 的值是 2。
那么 $a 在内存中的存放的格式是:
00000000 00000000 00000000 00011000
每执行一次右移,都将所有的位向由移动,右边超过的舍弃,左边空出的位补零。
所以 $a 右移 2 得到的是:
00000000 00000000 00000000 00000110
也就是 6。相当于 24 ÷ 2 ÷ 2 = 6。
位移运算是系统底层运算,运算的速度比乘除还要快很多,优化代码优化到极致的时候,可以将数换算成二的公倍数,然后进行位移计算。但在WEB开发中几乎没有任何必要,而且超过系统底层了,程序在的可移植性就会降低。
其他的位运算符也是差不多的。比如:
$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
假定变量 $a 的值是 5,$b 的值是 6。
$a:
00000000 00000000 00000000 00000101
$b:
00000000 00000000 00000000 00000110
$a & $b :
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000110
───────────────────────────
00000000 00000000 00000000 00000100
竖的看,上下都是 1 的得到 1 ,否则就是 0。
所以 $a & $b = 4。
~ $a Not(按位非) 将 $a 中为 0 的位设为 1,反之亦然。
~ $a:
00000000 00000000 00000000 00000101
───────────────────────────
11111111 11111111 11111111 11111010
如果 $a 是有符号整数,第一位是符号位,1表示负数,那么 ~ $a = -2147483642。
如果 $a 是无符号整数,第一位还是数据位,那么 ~ $a = 4294967290。
以下的就不详细介绍了:
$a | $b Or(按位或) 将把 $a 或者 $b 中为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中不同的位设为 1。
平常说的几位的系统,就是系统处理整数的时候,是多少个位同时计算的,上面的例子都是基于32位系统。因为移动时超过的位将被舍弃,如果是64位或12位的,位移的结果就可能不一样了,要将计算时位的数量调整下。