# 一个不按常理出牌的php函数...

**URL:** <https://www.shiqidu.com/t/topic/247>\
**Category:** 开发调优\
**Tags:** PHP\
**Created:** [2017 年10 月 16 日 10:04 UTC](https://www.shiqidu.com/t/topic/247 "2017-10-16T10:04:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

作者： ![Leon](https://www.shiqidu.com/user_avatar/www.shiqidu.com/leon/32/5_2.png) [@Leon](https://www.shiqidu.com/u/Leon)\
发布日期： [2017 年10 月 16 日 10:04 UTC](https://www.shiqidu.com/t/topic/247/1 "2017-10-16T10:04:33Z")

</div>

```php
$map = [    
    '360' => '360',    
    'baidu' => 'baidu',    
    'google' => 'google',    
];    
    
$url = 'https://www.google.com';    
foreach ($map as $key => $value) {    
    if (strpos($url, $key) !== false) {    
        echo $value;    
        break;    
    }    
}    

```

看上面这段代码你感觉应该输出什么？是不是`google`？

但是结果却是`360`? are you kidding me ?

![d576cc16a9f737cba113f2494b67b8ba.jpg](https://discourse.shiqidu.com/uploads_nj/article/20171017/d576cc16a9f737cba113f2494b67b8ba.jpg)

为什么呢？

原因是 `foreach`第一次时第一个key\*\*'360’ **会被当成int的** 360\*\*。  
而当`strpos`的第二个参数是 **int** 时，它将被转换为整型并被视为字符的顺序值。  
而`chr(360) = 'h'`。

so，输入出`360`

---

<div class="post-metadata">

作者： ![yeqiu](https://www.shiqidu.com/user_avatar/www.shiqidu.com/yeqiu/32/14_2.png) [@yeqiu](https://www.shiqidu.com/u/yeqiu)\
发布日期： [2017 年10 月 17 日 14:39 UTC](https://www.shiqidu.com/t/topic/247/2 "2017-10-17T14:39:44Z")

</div>

你不说我还真不知道`\'360\'`会被当成`360`
