我通常不喜欢放弃,但感觉这可能更有效率,但对于我的生活,我看不到它。
我有一个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);