2
我想知道是否有編程原因,爲什麼php開發人員選擇不具有preg_match
返回數據。爲什麼不preg_match返回數據?設計決定?
我主要想知道引用不存在而不是返回值的變量是否更快?
或者這只是其中一個「它只是功能實現的方式」問題?
我感謝你的時間,ty。
我想知道是否有編程原因,爲什麼php開發人員選擇不具有preg_match
返回數據。爲什麼不preg_match返回數據?設計決定?
我主要想知道引用不存在而不是返回值的變量是否更快?
或者這只是其中一個「它只是功能實現的方式」問題?
我感謝你的時間,ty。
這樣做可避免不使用實際捕獲的子串時不必要的字符串緩衝區複製;取決於字符串的大小,這可能會造成資源的大量浪費。
當$matches
參數未被傳遞時,PHP可以確定是否爲其分配資源。對於返回值也不能這樣做,因爲preg_match()
通常在需要評估它的情況下使用。
它通常(甚至可能是最常見的?)僅用於驗證匹配。沒有意義在吃額外的記憶捕捉值,以後不會使用它,除非你明確地打算使用它們。我認爲有趣的問題 - 至少有一個我能想到的PHP開發工具,所以希望你能得到一些內部意見。 – 2012-08-10 12:46:26
我要走出去,並建議這屬於[程序員](http://programmers.stackexchange.com/),因爲它不是[特定的編程問題](http://stackoverflow.com /常見問題#問題),但一個理論問題。這是一個很好的例子,我的意思是,如果你只是返回一個匹配數組,它仍然可以作爲一個布爾值('array()== FALSE')來計算,你可以很容易地將它計數()如果你想要比賽的數量。 – DaveRandom 2012-08-10 12:55:34
實際上,在[本文檔](http://www.pcre.org/pcre.txt)中,如果要提取匹配的字符串,則會涉及更多的C-API函數調用,而如果您只想要知道*如果*有一場比賽,那麼只有一對夫婦。所以我猜這是一個效率決定。 – DaveRandom 2012-08-10 13:00:38