亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

函數不會檢測數組值中包含的字符串

函數不會檢測數組值中包含的字符串

PHP
Helenr 2023-08-19 17:31:03
我在 PHP 中有一小段代碼,它根據值是否包含/包含特定值返回某些鍵值對:Code Runnable number 1這實際上取決于您需要如何準確地修改結果,“將單個 JSON 列轉換為多個列”相當模糊,并且可以用各種不同的方式解釋。在實體中轉換數據是一種選擇,但請注意實體應該盡可能愚蠢,理想情況下您應該盡可能將它們保留為普通數據傳輸對象。如果有其他方法解決問題,通常應該避免在實體本身中進行更大的“變革”操作。修改結果的集中方法是查詢對象的結果格式化程序,它們可以輕松附加到Model.beforeFind事件/處理程序中,以便將它們應用于特定表的所有查詢,甚至應用于所有表。afterFind這幾乎就是您在 CakePHP 2.x 中要做的事情。結果格式化程序還有一個優點,即當您使用禁用水合作用的查詢(即返回數組而不是實體的查詢)時,它們將為您提供正確的數據。一個快速而骯臟的例子:public function beforeFind(\Cake\Event\EventInterface $event, \Cake\ORM\Query $query): \Cake\ORM\Query{? ? return $query->formatResults(function (\Cake\Collection\CollectionInterface $results) {? ? ? ? return $results->map(function ($row) {? ? ? ? ? ? // $row is the entity (or array when hydration is disabled) in the result set? ? ? ? ? ??? ? ? ? ? ? $row['new_field'] = 1234;? ? ? ? ? ? return $row;? ? ? ? });? ? });}
查看完整描述

3 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

在這種情況下,正則表達式是多余的,您可以使用strpos

$matches = array_filter($example, function($var) use ($searchword) { return strpos($var,$searchword) !== FALSE; });


查看完整回答
反對 回復 2023-08-19
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

順便說一句,您不需要使用array_filter. 已經有一個函數可以根據模式過濾數組。

$matches = preg_grep("/$searchword/", $example);

但如果您不打算使用單詞邊界,我同意另一個答案,即您根本不需要使用正則表達式。


查看完整回答
反對 回復 2023-08-19
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

只需從正則表達式中刪除單詞邊界即可\b

return preg_match("/$searchword/i")


查看完整回答
反對 回復 2023-08-19
  • 3 回答
  • 0 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號