星辰工作中遇到要查找数组数据取出
工作场景:有两个数组一个是 [["时间","今天时间数据"],["时间","今天时间数据"],...]
另一个是 [["时间","昨天时间数据"],["时间","昨天时间数据"],["时间","昨天时间数据"],..]
这两个要组成 时间相差 60*60*24秒的数据 组成一个元素。
$startTime = microtime(true);
foreach ($list as $k1=>$v1){//时间复杂度O(n^2)
//获取下面时间轴
$categories[] = $v1->createTime;//当前时间
$sum[] = $v1->sum;
$isListYesterday = 0;//没有被更变
foreach ($listYesterday as $k2=>$v2){//搜索这个数组
// dump($v2->createTime);
// dump($v1->createTime);exit();
if (strtotime($v2->createTime)+60*60*24 == strtotime($v1->createTime)){//时间相差一整天的 存入数组里面
// dump($v2->createTime);
// dump($v1->createTime);
$sumYesterday[] = $v2->sum;
$isListYesterday = 1;
break;
}
}
if ($isListYesterday == 0){//没有搜索到就赋值一个
$sumYesterday[] = 0;
}
}
$endTime = microtime(true);
$execTime = bcsub($endTime,$startTime,8);//秒
这个顺序查找算法,其实就是暴力解法。在一组没有顺序的数组里面。进行一个一个遍历查找。当然如果查找到,就不需要遍历了 break返回出去。
然后判断一下如果没有查找到。赋值一个 0 作为默认的缺省值。、
转载请标注来源博客:www.z88j.com
原创文章,作者:星辰,如若转载,请注明出处:https://www.z88j.com/111.html