0

これはおそらく「木には森」という質問の 1 つだと思いますが、私は一日中ここに座っていて、どこが間違っているのかわかりません。

シナリオ:

基本的に、次のようなアドレス結果の連想配列を返すクエリがあります。

Array ( [0] => Array ( [Address_ID] => 12 [Address_String] => 23 Abledone road Hobs moat Solihull West Midlands B92 4JJ ) [1] => Array ( [Address_ID] => 13 [Address_String] => 22 Holdean Road Deepcut Surrey KT164NJ ) [2] => Array ( [Address_ID] => 14 [Address_String] => 32 Palbrough Road Nottingham N32 4NJ ) [3] => Array ( [Address_ID] => 15 [Address_String] => Flat 2B Gateway House Rutland Street Bearwood Westmidlands B66 9RT ) [4] => Array ( [Address_ID] => 16 [Address_String] => 258 Lincoln Street Bullworth Street Dundee DD35 9RJ ) [5] => Array ( [Address_ID] => 17 [Address_String] => 4 Scott Arms Avenue Beckton Hartfordshire H32 7JJ ) [6] => Array ( [Address_ID] => 18 [Address_String] => 14 Fairfield house Millbank road Bearwood Birmingham Westmidlands B137JJ ) [7] => Array ( [Address_ID] => 19 [Address_String] => 9 Scott road Olton Solihull Westmidlands B91 7TY ) [8] => Array ( [Address_ID] => 20 [Address_String] => Normandy House Bunnian Place Basingstoke RG21 7EJ ) [9] => Array ( [Address_ID] => 27 [Address_String] => 3 New Square Bedfont Lakes Feltham Middlesex TW14 8HB ) [10] => Array ( [Address_ID] => 28 [Address_String] => No. 1 The Square Temple Quay Bristol BS1 6DG ) [11] => Array ( [Address_ID] => 29 [Address_String] => The Visual Space Capital Park Fulbourn Cambridge CB21 5XH ) [12] => Array ( [Address_ID] => 40 [Address_String] => 21 St. Andrew Square Edinburgh Scotland CB21 5XH ) ) 

そして、私がやろうとしているのは、これらの結果を検索文字列と照合して、アドレスが既にデータベースにあるかどうかを確認することだけです。

私のコードは次のとおりです。

  public function addressExistsByString ($searchAddrString, $asJSON = FALSE) {
    if (!isset($searchAddrString)) {
        throw new Exception('The searchAddrString variable of function ' . __FUNCTION__ . ' of class ' . __CLASS__ . 'was empty or set to NULL.');
    } elseif (!is_string($searchAddrString)) {
        throw new Exception('The type of value for the argument addressID of function ' . __FUNCTION__ . ' of class ' . __CLASS__ . ' was ' . gettype($searchAddrString) . ' a string was expected');
    }if (!is_bool($asJSON)) {
        $asJSON = FALSE;
    }

   print_r ($addressArray = $this->getAllLocations(FALSE));

    if ($addressArray === -1) {
        return -2;
    } else {

        $search = str_replace(',','',  strtolower(trim($searchAddrString)));

        foreach ($addressArray as $record) {

           $recID = $record ['Address_ID']; 
           $currentAddress =str_replace(',','',  strtolower(trim($record['Address_String'])));

           echo 'Search address: '. $search. ' Current address: '.  $currentAddress .' type of current address: '.gettype($searchAddrString).'<br/>';  

           if ($currentAddress === $search) {

               if ($asJSON) {
                   echo json_encode($recID);
               }
               return intval($recID);
           }
        }
        if ($asJSON) {
            echo json_encode(-1);
        }
        return -1;
    }
}

このコードを実行すると、次の出力が得られます (少し長いですが、重要な部分が強調表示されています)。

bunnian place basingstoke rg21 7ej 現在の住所: 23 abledone road hobs moat solihull west midlands b92 4jj 現在の住所のタイプ: 文字列 検索住所: normandy house bunnian place basingstoke rg21 7ej 現在の住所: 22 holdean road deepcut surrey kt164nj 現在の住所のタイプ: string 検索住所: ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: 32 パルブロー ロード ノッティンガム n32 4nj 現在の住所のタイプ: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: フラット 2b ゲートウェイ ハウス ラトランド ストリート ベアウッド ウェストミッドランズ b66 9rt タイプ オブ カレントアドレス: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: 258 リンカーン ストリート ブルワース ストリート ダンディー dd35 9rj 現在の住所のタイプ: 文字列 検索アドレス:ノルマンディー ハウス バニアン プレイス ベージングストーク rg21 7ej 現在の住所: 4 スコット アームズ アベニュー ベクトン ハートフォードシャー h32 7jj 現在の住所のタイプ: 文字列 検索住所: ノルマンディー ハウス バニアン プレイス ベージングストーク rg21 7ej 現在の住所: 14 フェアフィールド ハウス ミルバンク ロード ベアウッド バーミンガム ウェストミッドランズ b137jj 現在の住所のタイプ: 文字列 検索アドレス: normandy house bunnian place basingstoke rg21 7ej 現在の住所: 9 scott road olton solihull westmidlands b91 7ty 現在の住所のタイプ: 文字列 検索アドレス:ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: 9 scott road olton solihull westmidlands b91 7ty 現在の住所のタイプ: 文字列 検索アドレス:ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: 9 scott road olton solihull westmidlands b91 7ty 現在の住所のタイプ: 文字列 検索アドレス:ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej現在の住所:ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej現在の住所のタイプ: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: 3 新しい正方形のベッドフォント レイクス フェルトハム ミドルセックス tw14 8hb 現在の住所のタイプ: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイシングストーク rg21 7ej 1 the square Temple quay bristol bs1 6dg 現在の住所のタイプ: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイジングストーク rg21 7ej 現在の住所: ビジュアル スペース キャピタル パーク フルボーン ケンブリッジ cb21 5xh 現在の住所のタイプ: 文字列 検索アドレス: ノルマンディー ハウス バニアン プレイス ベイジングストークrg21 7ej 現在の住所: 21 st. andrew square edinburgh scotland cb21 5xh 現在の住所のタイプ: 文字列 -1

強調表示された文字列はまったく同じです。両方を取得し、プレーンな文字列として別の if ステートメントに貼り付けてテストしました。常に true が返されます。==、=== キャスト、文字列値、その他考えられるすべてを試しましたが、何らかの理由で -1 が常に返されます。おそらく非常に単純な何かが欠けていることは知っていますが、それを見ることができません。誰か助けてもらえますか?

前もって感謝します。

4

1 に答える 1

1

var_dump()は、2つの変数を比較する直前に使用します。この前にタグをエコーし<pre>​​て、HTMLソースコードに切り替えることなくブラウザのすべての空白を表示します。

おそらく、そこにある空白文字を見逃しているでしょう。

于 2013-02-03T15:58:28.603 に答える