根据前两个数据收集第三级数据

时间:2017-02-08 10:27:28

标签: php recursion big-o nested-loops

我通常不喜欢放弃,但感觉这可能更有效率,但对于我的生活,我看不到它。

我有一个Web服务,我可以从中请求汽车的型号,制造和类型。

但是为了能够请求类型我需要制作并且能够请求制作我需要模型......

因为我需要所有类型(最后一级)迭代它们并在不同的功能中使用它们,我需要做这3个步骤。

唯一的问题是:我目前的代码需要大约3分钟才能完成,因为Big O ..感觉不正确。

如果你们能够提高效率,我将永远感激不尽:

$cars = [];
$makes = getMakes()['makes']['Make'];
$models = [];
$types = [];
$allTypes = [];

$timeStart = microtime(true);
// Takes waaaaaay too long
foreach ($makes as $key => $make) {
    $cars[$key]['makeName'] = $make['makename'];
    $cars[$key]['makeCode'] = $make['makecode'];

    $models = getModels($make['makecode'])['models']['Model'];
    foreach ($models as $subKey => $model) {
        if (is_array($model)) {
            if (array_key_exists('modelname', $model)) {
                $cars[$key]['models'][$subKey]['modelName'] = $model['modelname'];
            }
            if (array_key_exists('modelcode', $model)) {
                $cars[$key]['models'][$subKey]['modelCode'] = $model['modelcode'];
            }

            $types = getTypes($model['modelcode']);
            foreach ($types as $ssKey => $type) {
                if (is_array($type)) {
                    if (array_key_exists('typecode', $type)) {
                        $cars[$key]['models'][$subKey]['types'][$ssKey]['typeCode'] = $type['typecode'];
                        $allTypes[] = $type['typecode'];
                    }
                }
            }
        }
    }
}
$timeEnd = microtime(true);
print_r(($timeEnd - $timeStart) / 60); // 3.228285531203 (~3 minutes)
// print_r($cars);

0 个答案:

没有答案