真抓狂了……
大意如下:
$update=['f1'=>121.231,'f2'=>2312.12, 'f3'=>31.1231,'f4'=>213.12,'fv'=>3189.21321];$month=['m1'=>123.1289,'m2'=>123.23198, 'm3'=>23.21,'m4'=>138.21,'mv'=>1231.81]; foreach($update as &$v){ $v=round($v,4); } foreach($month as $k=>$v){ $update[$k]=round($v,4); }
请各位高人先看上面的代码,这个应该没有问题吧?有问题请指出来,我抓狂了,同时也不用看下面那一长大把啦的了……
核心就是将两个数组合并在一起(其他的实现方法先不谈,就只先用这个),并且保留4位小数
如果上面的代码没有问题,请看我下面的调试。
--------------------------DEBUG-------------------------
实际运行中发现fv字段还是保留了其小数位一大堆,总之没有执行round运算,让我开始怀疑人生了
代码中PR(print_r)看数据,发现在经过了update的foreach后都还是正常的,但是在进入month循环后就不正常了
整理后的调试代码见下:
if($debug_flag){ echo('原始数据');BR(); PR($update); } foreach($update as $k=>&$v){ $v=round($v,4); } //实在没有整明白为什么update的最后一个fv不进行四舍五入呢? if($debug_flag){ echo('update foreach 循环后数据');BR(); PR($update); echo('进入month循环');BR(); echo('month原始数据');BR(); PR($month); } foreach($month as $k=>$v){ if($debug_flag){ echo('in month ');BR(); PR($update); PR($k);BR(); } $update[$k]=round($v,4); if($debug_flag){ PR($update); echo('month 循环中数据');BR(); } } if($debug_flag){ echo('month循环后数据');BR(); PR($update); PR($month); die(); }
配套的调试结果见下:
原始数据Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.85900353103)update foreach 循环后数据Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.859)进入month循环month原始数据Array( [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.85900353103)in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 0)m0Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 0 [m0] => 0)month 循环中数据in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 596.4 [m0] => 0)m1Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 596.4 [m0] => 0 [m1] => 596.4)month 循环中数据in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 604.5 [m0] => 0 [m1] => 596.4)m2Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 604.5 [m0] => 0 [m1] => 596.4 [m2] => 604.5)month 循环中数据in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.3325 [m0] => 0 [m1] => 596.4 [m2] => 604.5)m3Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.3325 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325)month 循环中数据in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 602.0825 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325)m4Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 602.0825 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825)month 循环中数据in monthArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.85900353103 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825)mvArray( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.85900353103 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.859)month 循环中数据month循环后数据Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.85900353103 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.859)Array( [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.85900353103)
如果您有耐心看完的话,就会发现进入month循环后数据就已经开始在乱变了……
难道foreach或者是数组的$array[$key]=$value还有什么不为人知的东西?
求援手!
回复讨论(解决方案)
调试到这里顺便就把代码改了
$update=array_merge($update,$month,$year); foreach($update as &$v){ $v=round($v,4); }
这个数据就是正常的了,而且也更简短+明了+没有出错!
但原来的代码是啥地方有问题啊?
$update = array ( 'f1' => 596.4, 'f2' => 604.5, 'f3' => 600.3325, 'f4' => 602.0825, 'fv' => 600.85900353103,);$month = array ( 'm0' => 0, 'm1' => 596.4, 'm2' => 604.5, 'm3' => 600.3325, 'm4' => 602.0825, 'mv' => 600.85900353103,);foreach($update as $k=>&$v){ $v = round($v, 4);}unset($v);foreach($month as $k=>$v){ $update[$k] = round($v, 4);}print_r($update);
Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.859 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.859)看到区别了吗?我多用了个 unset($v);
其实这是引用惹的祸,你测试的两组数据正好是相同的,如果你把 $month['mv'] 改成 0,立刻就会发现问题了
$update = array ( 'f1' => 596.4, 'f2' => 604.5, 'f3' => 600.3325, 'f4' => 602.0825, 'fv' => 600.85900353103,);$month = array ( 'm0' => 0, 'm1' => 596.4, 'm2' => 604.5, 'm3' => 600.3325, 'm4' => 602.0825, 'mv' => 600.85900353103,);foreach($update as $k=>&$v){ $v = round($v, 4);}unset($v);foreach($month as $k=>$v){ $update[$k] = round($v, 4);}print_r($update);
Array( [f1] => 596.4 [f2] => 604.5 [f3] => 600.3325 [f4] => 602.0825 [fv] => 600.859 [m0] => 0 [m1] => 596.4 [m2] => 604.5 [m3] => 600.3325 [m4] => 602.0825 [mv] => 600.859)看到区别了吗?我多用了个 unset($v);
其实这是引用惹的祸,你测试的两组数据正好是相同的,如果你把 $month['mv'] 改成 0,立刻就会发现问题了
哦,对……忘记引用这回事情了……一般都很少用&,偶尔用用也没有出错……
谢谢!

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP remains important in modern web development, especially in content management and e-commerce platforms. 1) PHP has a rich ecosystem and strong framework support, such as Laravel and Symfony. 2) Performance optimization can be achieved through OPcache and Nginx. 3) PHP8.0 introduces JIT compiler to improve performance. 4) Cloud-native applications are deployed through Docker and Kubernetes to improve flexibility and scalability.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver CS6
Visual web development tools