0
我做了這個真棒 wordpress的插件可以輕鬆地添加對使用乳膠狀標籤的博客文章的引用。它工作得很好,但有一個令人討厭的細節:我使用全局變量,因爲我需要在匿名函數中更改一個變量,但我無法更改傳遞的參數(它是一個回調函數)。在PHP中使用匿名函數訪問父函數範圍
我試過use
語法,它的工作原理,但變量獲取複製到匿名函數。
下面的代碼,縮短給什麼,我想做一個簡要概述:
// Global variables, ugh...
// I don't want to declare $reflist here!
$reflist = array();
// Implementation of reference parsing.
function parse_references($str) {
// Clear array
$reflist = array();
// I want to declare $reflist here!
// Replace all tags
$newstr = preg_replace_callback("/{.*}/",
function ($matches) {
// Find out the tag number to substitute
$tag_number = 5;
// Add to $reflist array
global $reflist;
// I don't want to have to use a global here!
$reflist[] = $tag_number;
return "[$tag_number]";
}, $str);
return $newstr;
}
因此,沒有人知道如何優雅地解決這個問題?
'$ a'變量未定義。這可能是一個錯誤。 –
不,它應該把{sometag}變成[5] :) –
'$ str'參數的用法是什麼? –