首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中一起运行两个循环而不复制值?

如何在PHP中一起运行两个循环而不复制值?
EN

Stack Overflow用户
提问于 2014-01-13 09:08:43
回答 6查看 799关注 0票数 0

我试图用MD5检查一些数据的md5 --一些文件,它们都存储在一维数组中。假设我在$files数组中有4个文件具有相同数量的$datas,下面的代码输出“无差异”12次,而不是4次。

代码语言:javascript
复制
foreach($files as $file) {
    foreach($datas as $data) {
        if(md5($data) !== md5_file($file)) {
            echo "NO DIFFERENCE"; 
        }
    }
}

如何防止重复循环?

更新:数组$datas和$files都包含相同数量的值,但棘手的部分是$files数组中的值从键2开始(因为我删除了“。还有“.”而在$datas中,数组值从键号0开始。

EN

回答 6

Stack Overflow用户

发布于 2014-01-13 09:13:17

如果您想将md5(文件)与mfs5(数据)进行比较,只需这样做:

代码语言:javascript
复制
for ($i = 0; $i < sizeof($files); $i++){
    if(md5($datas[$i]) !== md5_file($files[$i+2])) 
        echo "NO DIFFERENCE"; 
}

如果您想检查每个文件是否有一个对应的md5(数据),那么您应该像以前一样使用双循环。

票数 0
EN

Stack Overflow用户

发布于 2014-01-13 09:13:23

下面的代码打印“无差异”12次,而不是4次。

其原因是您有一个嵌套循环。

对于$files数组中的每个值,您的内部foreach将运行一次。

因此,如果$files中有3个值,$datas中有4个值,那么循环将按如下方式运行:

  • $files迭代中的第一个值
    • 内循环运行,并遍历$datas中的所有4个值。

  • $files迭代中的第二个值
    • 内循环运行,并遍历$datas中的所有4个值。

  • $files迭代中的第三个值
    • 内循环运行,并遍历$datas中的所有4个值。

票数 0
EN

Stack Overflow用户

发布于 2014-01-13 09:13:45

用这样的一个循环来尝试这个:

代码语言:javascript
复制
foreach($datas as $key => $value) {
if(md5($value) !== md5_file($files[$key])) {
echo "NO DIFFERENCE"; 
}
}

当两个数组的值都相同时,循环工作Note:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21087335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档