0
我遇到了一些問題......我已經完成了一些研究,並且我被告知在foreach中使用array_merge可能會特別慢並且佔用大量內存,我需要替代這個代碼塊。但我不知道什麼是最好的方法PHP array_merge在循環中使用時特別慢並且佔用大量內存
任何人都可以幫忙嗎?
/**
* Parse long itrative tags
*
* Return array of matches for iterative tag pattern e.g. {%label%} to output the document label on this iteration of the loop
*
* @access public
* @return array
*/
function parse_long_iterative_tags($text)
{
$pattern = "/{%(?P<type>[A-Za-z0-9_?!]+):\((?P<name>.+)\)[\s]*(?P<attributes>[A-Za-z0-9\s_,:?.\/\-\|\(\)]*?){[\s]*(?P<content>(.*?[\s]*)*)[\s]*\}[\s]*end\\1\%}/";
preg_match_all($pattern,$text,$matches);
if(!empty($matches['content'])):
$nested = implode("",$matches['content']);
$sub_matches = $this->parse_long_iterative_tags($nested);
foreach($matches as $k=>$v):
$matches[$k] = array_merge($matches[$k],$sub_matches[$k]);
endforeach;
return $matches;
else:
return $matches;
endif;
return $matches;
}
你想用它完成什麼? – MiltoxBeyond
如果我們能夠看到正在處理的數據的示例,那麼可能會更容易理解您正在執行的操作。否則,你只會得到一堆猜測 – RiggsFolly
是的。因爲到目前爲止,我看到你可以簡單地做$匹配[$ k] [] = $ sub_matches [$ k] – MiltoxBeyond