我试图用MD5检查一些数据的md5 --一些文件,它们都存储在一维数组中。假设我在$files数组中有4个文件具有相同数量的$datas,下面的代码输出“无差异”12次,而不是4次。
foreach($files as $file) {
foreach($datas as $data) {
if(md5($data) !== md5_file($file)) {
echo "NO DIFFERENCE";
}
}
}如何防止重复循环?
更新:数组$datas和$files都包含相同数量的值,但棘手的部分是$files数组中的值从键2开始(因为我删除了“。还有“.”而在$datas中,数组值从键号0开始。
发布于 2014-01-13 09:13:17
如果您想将md5(文件)与mfs5(数据)进行比较,只需这样做:
for ($i = 0; $i < sizeof($files); $i++){
if(md5($datas[$i]) !== md5_file($files[$i+2]))
echo "NO DIFFERENCE";
}如果您想检查每个文件是否有一个对应的md5(数据),那么您应该像以前一样使用双循环。
发布于 2014-01-13 09:13:23
下面的代码打印“无差异”12次,而不是4次。
其原因是您有一个嵌套循环。
对于$files数组中的每个值,您的内部foreach将运行一次。
因此,如果$files中有3个值,$datas中有4个值,那么循环将按如下方式运行:
$files迭代中的第一个值$datas中的所有4个值。
$files迭代中的第二个值$datas中的所有4个值。
$files迭代中的第三个值$datas中的所有4个值。
发布于 2014-01-13 09:13:45
用这样的一个循环来尝试这个:
foreach($datas as $key => $value) {
if(md5($value) !== md5_file($files[$key])) {
echo "NO DIFFERENCE";
}
}当两个数组的值都相同时,循环工作Note:。
https://stackoverflow.com/questions/21087335
复制相似问题