2012-08-10 60 views
2

我想知道是否有編程原因,爲什麼php開發人員選擇不具有preg_match返回數據。爲什麼不preg_match返回數據?設計決定?

我主要想知道引用不存在而不是返回值的變量是否更快?

或者這只是其中一個「它只是功能實現的方式」問題?

我感謝你的時間,ty。

+3

它通常(甚至可能是最常見的?)僅用於驗證匹配。沒有意義在吃額外的記憶捕捉值,以後不會使用它,除非你明確地打算使用它們。我認爲有趣的問題 - 至少有一個我能想到的PHP開發工具,所以希望你能得到一些內部意見。 – 2012-08-10 12:46:26

+1

我要走出去,並建議這屬於[程序員](http://programmers.stackexchange.com/),因爲它不是[特定的編程問題](http://stackoverflow.com /常見問題#問題),但一個理論問題。這是一個很好的例子,我的意思是,如果你只是返回一個匹配數組,它仍然可以作爲一個布爾值('array()== FALSE')來計算,你可以很容易地將它計數()如果你想要比賽的數量。 – DaveRandom 2012-08-10 12:55:34

+0

實際上,在[本文檔](http://www.pcre.org/pcre.txt)中,如果要提取匹配的字符串,則會涉及更多的C-API函數調用,而如果您只想要知道*如果*有一場比賽,那麼只有一對夫婦。所以我猜這是一個效率決定。 – DaveRandom 2012-08-10 13:00:38

回答

1

這樣做可避免不使用實際捕獲的子串時不必要的字符串緩衝區複製;取決於字符串的大小,這可能會造成資源的大量浪費。

$matches參數未被傳遞時,PHP可以確定是否爲其分配資源。對於返回值也不能這樣做,因爲preg_match()通常在需要評估它的情況下使用。