首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么即使对于相同的字符串,字符串比较也总是返回false?

为什么即使对于相同的字符串,字符串比较也总是返回false?
EN

Stack Overflow用户
提问于 2013-02-03 15:41:08
回答 1查看 2.3K关注 0票数 0

我知道这可能是“树林换树”的问题之一,但我已经坐在这里一整天了,我只是不知道自己哪里出了问题。

设想情况:

基本上,我有一个查询,返回以下assoc地址结果数组,如下所示:

代码语言:javascript
复制
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 ) ) 

我所要做的就是将这些结果与一个搜索字符串相匹配,以查看地址是否已经在我的db中。

我的代码如下:

代码语言:javascript
复制
  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;
    }
}

当我运行这段代码时,我得到了以下输出(抱歉,它有点长,但重要的部分是突出显示的):

巴辛斯托克rg21 7 7ej当前地址: 23可建道路霍布斯护城河、索里赫尔西米德兰兹b92 4jj类型的当前地址:字符串搜索地址:诺曼底豪宅邦宁斯托克广场rg21 7 7ej当前地址: 22荷兰路深切萨里kt164nj类型当前地址: string搜索地址: normandy house bunnian rg21 7 7ej当前地址: 32 palbrough nottingham n32 4 4nj类型当前地址:字符串搜索地址: normandy house basingstoke rg21 7ej当前地址: normandy basingstoke rg21 7ej当前地址: rutland街bearwood westmidlands b66 9类型当前地址: string地址: normandy house midlands rg21 rg21 7j当前地址:林肯街布尔沃思街258号dd35 9 9rj当前地址:字符串搜索地址:诺曼底豪宅邦尼广场basingstoke rg21 7 7ej当前地址:斯科特军士大道4号贝克顿哈特福德郡h32 7 7jj类型当前地址: string搜索地址: string搜索地址:诺曼底豪宅邦尼广场basingstoke rg21 7 7ej当前地址:费尔菲尔德豪斯米尔班克路14号比尔伍德伯明翰韦斯特兰兹b137jj类型:字符串搜索地址:诺曼底豪宅平铺贝辛斯托克rg21 7 7ej当前地址:斯科特路奥尔顿斯利赫尔西部中部地区b91 7ty类型的当前地址: string地址:normandy house bunnian rg21 basingstoke rg21 rg21 7ej当前地址:normandy house basingstoke rg21 rg21 7ejrg21 7 7ej类型当前地址: string搜索地址: normandy house bunnian rg21 7 7ej当前地址:3个新的贝德丰特湖菲尔塔姆米德尔塞克斯tw14 8hb类型的当前地址: string搜索地址: string搜索地址: normandy house bunnian rg21 7 7ej当前地址:1号方形寺庙码头bs1 6dg类型的当前地址: string搜索地址: normandy house bunnian rg21 7ej当前地址:视觉空间大本营公园quay剑桥cb21 5xh类型的当前地址:string搜索地址: normandy house bunnian rg21 7ej当前地址: st 21。安德鲁广场爱丁堡苏格兰cb21 5xh类型当前地址: string -1

突出显示的字符串完全相同,我测试了它们,方法是将它们都取下来,并将它们作为普通字符串放在单独的if语句中,并始终返回true。我尝试过==、===转换、string值和所有我能想到的东西,但出于某种原因-1总是返回。我知道这可能是我错过的很简单的东西,但我就是看不见,有人能帮上忙吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-03 15:58:28

在您比较两个变量之前,请先对它们进行转储()。在此之前回显一个<pre>标记,以查看浏览器中的所有空白,而无需切换到HTML源代码。

你很可能会错过一些空格字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14674175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档