0
このスクリプトは、テキストのすべての行に "FIRST"と "LAST"の単語があるかどうかを確認し、$temp_names
のエントリで置き換えようとしています。preg_replace_callbackのクロージャに関する問題
$temp_names = array('FIRST' => array('John','Jack'),'LAST' => array('Doe','Smith'));
for ($i=0; $i < count($lines); $i++)
{
$lines[$i] = preg_replace_callback("/FIRST|LAST/",
function($matches) use ($temp_names){
return array_shift($temp_names[$matches[0]]); }, $lines[$i]);
}
私は、閉鎖機能にreturn array_shift()
に問題があります。最初のエントリが正しく返されますが、エントリは配列内にとどまります。だから毎回 "John"と "Doe"を返します。何故ですか?
ありがとうございました。 (そのような値をシフトなど)$temp_names
配列に変更を持っているために、
ああ、私の悪いように参照することにより
use
それをする必要があります。今それは働いた。ありがとう! – nukl