我運行此針對一個關聯(非數字鍵)數組,它是80K線,從2.1K JSON文件解碼遞歸的foreach:加快使用PHP
$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:<7.0,您可以使用SplFixedArray,並且函數內部的遞歸函數永遠不會返回某些東西,因爲您不指定它 –
我不認爲SplFixedArray適用 - 「SplFixedArray具有固定長度並且只允許內部的整數範圍作爲索引「。我想,因爲這些鍵是我想保留的數據的字符串,所以這是不可用的。 – startingout