2016-03-21 8 views
0

配列に特定の文字列が含まれているかどうかを確認しようとしています。私の特定の状況では、私は顧客のアドレスを含む配列を持っています。私はすべてのアドレスがPO Boxかどうかを調べようとしています。それらのアドレスのすべてがPO Boxであればエラーメッセージを表示したい。PHP配列内のすべての値に文字列が含まれている場合を参照

これは私の現在のものです。ここで

public function checkPhysicalAddressOnFile(){ 
    $customer = Mage::getSingleton('customer/session')->getCustomer(); 
    foreach ($customer->getAddress() as $address) { 
     if stripos($address, '[p.o. box|p.o box|po box|po. box|pobox|post office box]') == false { 
      return false 
+0

を私は最高の答えとしてそれをマークし


はここで、より簡潔なオプションです!ありがとう! – djames

答えて

0

私はそれに近づくだろうかです:あなたのコードは、すでに作業にかなり近かった

public function checkPhysicalAddressOnFile(){ 
    $addresses = Mage::getSingleton('customer/session')->getCustomer()->getAddresses(); 

    foreach($addresses AS $address) { 
     if(!preg_match("/p\.o\. box|p\.o box|po box|po\. box|pobox|post office box/i", $address)) { 
      // We found an address that is NOT a PO Box! 
      return true; 
     } 
    } 

    // Apparently all addresses were PO Box addresses, or else we wouldn't be here. 
    return false; 
} 

、あなたは主にちょうど正規表現パターンに対してチェックするpreg_match機能を必要としていました。

public function checkPhysicalAddressOnFile() { 
    return (bool) count(array_filter(Mage::getSingleton('customer/session')->getCustomer()->getAddresses(), function($address) { 
     return !preg_match("/p\.o\. box|p\.o box|po box|po\. box|pobox|post office box/i", $address); 
    })); 
} 

例えばここを参照してください:https://3v4l.org/JQQpA

関連する問題