preg_replace_callback 中 function($match) use ($ten), 裡面的 use 是什麼意思

來源:互聯網
上載者:User
$string = "Some numbers: one: 1; two: 2; three: 3 end";$ten = 10;$newstring = preg_replace_callback(    '/(\\d+)/',    function($match) use ($ten) { return (($match[0] + $ten)); },    $string    );echo $newstring; 


回複討論(解決方案)

use 中文釋義 使用

function($match) use ($ten) { return (($match[0] + $ten)); }
讓變數 $ten 在匿名函數中可以被使用

相當於
$ten = 10;
function foo($match) {
global $ten;
return (($match[0] + $ten));
}
不過如果 $ten 不是全域變數的話就有麻煩了

php 5.3新增的閉包文法

閉包函數(匿名函數)可以從父範圍中繼承變數 任何此類變數都應該用 use 語言結構傳遞進去

use 中文釋義 使用

function($match) use ($ten) { return (($match[0] + $ten)); }
讓變數 $ten 在匿名函數中可以被使用

相當於
$ten = 10;
function foo($match) {
global $ten;
return (($match[0] + $ten));
}
不過如果 $ten 不是全域變數的話就有麻煩了



5.2中可以替換嗎?
如果不是全域變數可以就不能做了嗎?$ten;

php 5.3新增的閉包文法

閉包函數(匿名函數)可以從父範圍中繼承變數 任何此類變數都應該用 use 語言結構傳遞進去


5.2不能用嗎? 沒有替換方法嗎?

5.2 不能用你可以這樣

$string = "Some numbers: one: 1; two: 2; three: 3 end";$ten = 10;$newstring = preg_replace_callback(    '/(\\d+)/',    create_function('$match', "return \$match[0] + $ten;"),    $string    );echo $newstring;

5.2 不能用你可以這樣

$string = "Some numbers: one: 1; two: 2; three: 3 end";$ten = 10;$newstring = preg_replace_callback(    '/(\\d+)/',    create_function('$match', "return \$match[0] + $ten;"),    $string    );echo $newstring;


謝謝 ,
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.