PHP 制作了一个计算器,出了点问题,求解!
这是我做0输入的处理代码:
===============================================================
if($_POST['num0']){
$num=$_POST['num0'];
if(is_dir('txt')){
$open=fopen("txt/caculator.txt","r+");
if(is_file("txt/caculator.txt")){
$a=file_get_contents("txt/caculator.txt");
$e=(int)$a;
$b=$e."0";
echo $b;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
=================================================================
这是表单:
=================================================================
=================================================================
全部代码在二楼。
主要意思就是 先在localhost下创建文件夹txt,再在文件夹txt下创建文件caculator.txt
caculator2.txt; caculator3.txt; 单击对应数字将数字显示到文本框,并存储到caculator.txt,
然后单击运算符,将对应运算符存储到caculator3.txt中,并将caculator.txt中的字符串存入caculator2.txt,然后清空caculator.txt,这是单击数字按钮输入第二个运算数字,并将第二个运算
数字存入caculator.txt中,当单击等于号,先对caculator3.txt中存入的运算符进行判断,然后进行
相应的运算。
其他都没问题,都可以实现,问题出现在输入0的时候,程序不会把0存入到文件中,导致0的输入不能实现,
不知道什么问题,求解答。初步估计是数据类型的问题。。。
回复讨论(解决方案)
if(!is_dir('txt')){
if(!is_file("txt/caculator.txt")){
echo"<script>alert('请在localhost下创建文件夹txt,并在文件夹txt下创建3个文件,分别是caculator.txt <br /> caculator2.txt caculator3.txt 然后才能正常完成任务!');</script>";
}}
if($_POST['num0']){
$num=$_POST['num0'];
if(is_dir('txt')){
$open=fopen("txt/caculator.txt","r+");
if(is_file("txt/caculator.txt")){
$a=file_get_contents("txt/caculator.txt");
$e=(int)$a;
$b=$e."0";
echo $b;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字1的反应
if($_POST['num1']){
$num=$_POST['num1'];
if(is_dir('txt')){
$open=fopen("txt/caculator.txt","r+");
if(is_file("txt/caculator.txt")){
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
if($_POST['num2']){
//单击数字2的反应
$num2=$_POST['num2'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num2;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字3的反应
if($_POST['num3']){
$num=$_POST['num3'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字4的反应
if($_POST['num4']){
$num=$_POST['num4'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字5的反应
if($_POST['num5']){
$num=$_POST['num5'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字6的反应
if($_POST['num6']){
$num=$_POST['num6'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字7的反应
if($_POST['num7']){
$num=$_POST['num7'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字8的反应
if($_POST['num8']){
$num=$_POST['num8'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击数字9的反应
if($_POST['num9']){
$num=$_POST['num9'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
//单击 点 的反应
if($_POST['dot']){
$num=$_POST['dot'];
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$findme= ".";
$pos=strpos($a, $findme);
if($pos==true){
file_put_contents("txt/caculator.txt",$a);
fclose($open);
}
else{
$b=$a.$num;
file_put_contents("txt/caculator.txt",$b);
fclose($open);
}
}
}
}
//单击选项C的反应
if($_POST['Clear']){
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","w+");
$open;
$open=fopen("txt/caculator2.txt","w+");
$open2;
$open=fopen("txt/caculator3.txt","w+");
$open3;
}
}
}
//单击 ← 的反应
if($_POST['back']){
if(is_dir('txt')){
if(is_file("txt/caculator.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$a=file_get_contents("txt/caculator.txt");
$a=substr($a,0,-1);
file_put_contents("txt/caculator.txt",$a);
}
}
}
//单击+的反应
if($_POST['add']){
if(is_dir('txt')){
if(is_file("txt/caculator2.txt")&&is_file("txt/caculator.txt")&&is_file("txt/caculator3.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$open2=fopen("txt/caculator2.txt","r+");
$open2;
$open3=fopen("txt/caculator3.txt","r+");
$open3;
$b="";
$c="+";
$a=file_get_contents("txt/caculator.txt");
file_put_contents("txt/caculator.txt",$b);
file_put_contents("txt/caculator2.txt",$a);
file_put_contents("txt/caculator3.txt",$c);
}
}
}
//单击-的反应
if($_POST['sub']){
if(is_dir('txt')){
if(is_file("txt/caculator2.txt")&&is_file("txt/caculator.txt")&&is_file("txt/caculator3.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$open2=fopen("txt/caculator2.txt","r+");
$open2;
$open3=fopen("txt/caculator3.txt","r+");
$open3;
$b="";
$c="-";
$a=file_get_contents("txt/caculator.txt");
file_put_contents("txt/caculator.txt",$b);
file_put_contents("txt/caculator2.txt",$a);
file_put_contents("txt/caculator3.txt",$c);
}
}
}
//单击乘的反应
if($_POST['mul']){
if(is_dir('txt')){
if(is_file("txt/caculator2.txt")&&is_file("txt/caculator.txt")&&is_file("txt/caculator3.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$open2=fopen("txt/caculator2.txt","r+");
$open2;
$open3=fopen("txt/caculator3.txt","r+");
$open3;
$b="";
$c="*";
$a=file_get_contents("txt/caculator.txt");
file_put_contents("txt/caculator.txt",$b);
file_put_contents("txt/caculator2.txt",$a);
file_put_contents("txt/caculator3.txt",$c);
}
}
}
//单击=的反应
if($_POST['equal']){
if(is_dir('txt')){
if(is_file("txt/caculator2.txt")&&is_file("txt/caculator.txt")&&is_file("txt/caculator3.txt")){
$open=fopen("txt/caculator.txt","r+");
$open;
$open2=fopen("txt/caculator2.txt","r+");
$open2;
$open3=fopen("txt/caculator3.txt","r+");
$open3;
$a=file_get_contents("txt/caculator.txt");
$b=file_get_contents("txt/caculator2.txt");
$c=file_get_contents("txt/caculator3.txt");
$nul="";
if($c=="+"){
$d=$b+$a;
}
if($c=="-"){
$d=$b-$a;
}
if($c=="*"){
$d=$a*$b;
}
if($c=="/"){
$d=$b/$a;
}
if($c=="%"){
$d=$b%$a;
}
if($c=="+"){
$d=$a+$b;
}
if($c=="√"){
$d=sqrt($a);
}
file_put_contents("txt/caculator.txt",$d);
}
}
}
以上是大部分代码,由于输入字符有限,关键代码贴出来了。
好多代码 你还是 直接说哪里出问题了吧 说关键的
你的问题在于:
if($_POST['num0']){
因为 $_POST['num0'] 等于 0,所以条件恒不成立。该分支不会进入!
应改作
if($_POST['num0'] == '0'){
你的程序设计的很不合理,需要做大幅度调整
文件操作函数的使用也欠妥
既然是用 file_get_contents、file_put_contents 读写文件,那么就不需要 fopen、fclose 再来做摆设了
file_put_contents 有一个 FILE_APPEND 参数可以附加内容到文件,而无需读出后人工追加
如果需要,可以你一个调整后的代码供参考
用AJAX,然后动态PHP编译就得了,实际把一大堆公司放进去计算好了。
你的问题在于:
if($_POST['num0']){
因为 $_POST['num0'] 等于 0,所以条件恒不成立。该分支不会进入!
应改作
if($_POST['num0'] == '0'){
你的程序设计的很不合理,需要做大幅度调整
文件操作函数的使用也欠妥
既然是用 file_get_contents、file_put_contents 读写文件,那么就不需要 fope……
版主大神啊...我还是刚开始学的...
求以后多多指教!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。
