【发布时间】:2018-03-31 00:02:07
【问题描述】:
我正在对一个 80K 行的关联(非数字键)数组运行这个,从 2.1K json 文件解码:
$ret = array();
function recursive(array $array, $tableName, $level=''){
global $ret;
$tableData = array();
foreach($array as $key => $value){
if(!is_array($key)) $k = $key; // keep array keys for tablename
if(is_array($value)){
$key = is_int($key) ? $tableName : $key; //skip empty subarrays
recursive($value, $level=$key);
} else{
$tableData=[$tableName, $k, $value];
}
if (!empty($tableData))
{array_push($ret, $tableData);
}
}
return $ret;
}
$ret =(recursive($array, 'project'));
json 数据包含在 'is_int($key) 递归循环期间被丢弃的空子数组。这是将要处理的典型文件大小,并且该功能需要 2 分钟以上才能运行 - 这可能已经达到了最佳效果 - 但我想问是否有任何方法可以通过更好的编码来加速这个功能。
谢谢,
【问题讨论】:
-
如果你使用 php:
-
我认为 SplFixedArray 不适用 - “SplFixedArray 是固定长度的,并且只允许范围内的整数作为索引”。我认为由于键是我要保留的数据的字符串,因此这是不可用的。
标签: php json performance recursion