V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
barb
V2EX  ›  程序员

php问题strpos($goods_attr,'VIP套餐') !== false)不同环境下结果不同.

  •  
  •   barb · 2013-12-28 18:07:10 +08:00 · 6311 次点击
    这是一个创建于 3975 天前的主题,其中的信息可能已经有所发展或是发生改变。
    $rrrr=array();
    if(strpos($rrrr,'VIP套餐') !== false){
    echo 'aaa';
    }else{
    echo 'bbb';
    }
    同一套代码,一个出来aaa,一个出来bbb
    搞了一下午没发现原因
    13 条回复    1970-01-01 08:00:00 +08:00
    lizheming
        1
    lizheming  
       2013-12-28 18:13:53 +08:00
    strpos接受的第一个参数不是string么..能用array?以及不等于不是 != 么?
    txlty
        2
    txlty  
       2013-12-28 18:17:14 +08:00
    !==是“不全等”没错。
    参数确实有问题。根据你的代码推测,应该用 in_array('VIP套餐',$rrrr) 吧?
    lizheming
        3
    lizheming  
       2013-12-28 18:21:38 +08:00
    @txtly 嗯,学习到了..还有不全等一说啊0_0...
    master
        4
    master  
       2013-12-28 18:23:31 +08:00
    确实得要 !== 的,这个地方没错。

    第一个参数确实不应该是array,而且文档中的Notes也有用户指出第一个参数传array的时候会出现意料之外的结果
    http://www.php.net/manual/en/function.strpos.php

    最后同楼上,如果需要在数组中进行查找的的话,用的不是strpos而是in_array
    http://www.php.net/in_array
    Sunyanzi
        5
    Sunyanzi  
       2013-12-28 18:46:22 +08:00   ❤️ 2
    @lizheming 二爷你这是在卖萌么 ... 怎么可能会不知道全等和不全等啦 ...

    关于 LZ 的问题 ... 代码本身存在的错误楼上说了不少我就不赘述了 ...

    我单纯说一下为什么这段不正确的代码会产生两种不同的结果 ...

    这里要以 php 5.3 为分界线 ... 在 php 5.3 之前的任何一个版本 ...

    如果你给一个字符串参数传递数组的话会触发一个 Notice 级的 Array to string conversion ...

    然后是正常的空字符串查找 ... 返回 false ... 你的代码输出 bbb ...

    5.3 之后这种不严谨的行为被修正了 ... 同样的代码会触发一个 type mismatch 的 warning ...

    具体描述大概类似这样 ... strpos() expects parameter 1 to be string, array given in file ...

    这时函数无法正常执行 ... 返回值是 null ... 你的代码输出 aaa ...

    所以我们得到结论 ... 造成这个问题的根本原因是你的两个环境 php 版本不同 ...

    输出 bbb 的 php 版本一定低于输出 aaa 的 php 版本 ...

    另外提供一个建议 ... 在开发的时候保持 error_reporting 开启 ...

    这样的话造成这个区别的原因一眼就能看出来 ... 根本不用浪费一个下午 ...
    lizheming
        6
    lizheming  
       2014-01-03 20:49:52 +08:00
    @Sunyanzi -_-!惊现孙大大的回复,好神奇..话说我是真的不知道不全等这个概念的,因为之前都没用过..不过现在直到了QwQ..我真的不是恶意卖萌啊....
    以及v2ex的提醒真是好bug,明明6天之前的回复结果今天因为另外一条回复提醒才被激发,让我错过了即时和孙大大聊天的几乎该当何罪!!!
    最后,孙大大不去sf玩了么QAQ,感觉大大好久没去了啊。
    Sunyanzi
        7
    Sunyanzi  
       2014-01-05 13:25:20 +08:00
    @lizheming 好吧 ... 那就当做不经意间学到了新知识好啦 ...

    SF 还是有去看啦 ... 但近来都没发现想要回答的问题的说 ...

    以及最近的回答质量都不错 ... 偷偷的看着大家百花齐放也是很有趣的事情 ...

    另外 ... 从我的直觉上讲 P 酱似乎是个萌萌的姑娘 ... 要好好跟她发展呀!
    lizheming
        8
    lizheming  
       2014-01-05 18:55:31 +08:00
    @Sunyanzi =。=!吓尿...sf上每一个剧情发展都被大大观察到了..好腻害T_T... 话说做到这种程度已经不只是“有去看”这么简单了吧=。=
    以及大大你的直觉杯具了,P酱意外的是个男的,而且还结婚了...最重要的是刚有娃娃了...发展个毛线啊...摔!!T_T... 不过我还是勾搭成功了 =w=
    Sunyanzi
        9
    Sunyanzi  
       2014-01-05 19:14:07 +08:00
    @lizheming 什!!么!!!!我!!便!!是!!不!!相!!信!!了!!口!!牙!!

    说是可爱的男孩纸我也就信了 ... 这么萌断然不可能是一个有娃娃的大叔啊啊啊啊啊啊啊啊啊啊啊!!

    妈蛋 ... 我的世界观要崩坏了么 ... 怎么可能会有男人比我还萌的!!

    不 ... 不是这样的 ... 在三次元亲眼见到 P 酱本人之前不要相信这些奇怪的事情!!
    lizheming
        10
    lizheming  
       2014-01-05 19:36:11 +08:00
    @Sunyanzi 大叔也有春天好么,大大不要这么歧视大叔哇o(╯□╰)o.. P酱是萌物啦但是断然超越不了大大啊..您是属于傲娇萌啊,顶级萌属性啊有么有!!!!!
    三次元..唔..我只有P酱萌崽照片一枚..他本人的只能靠大大你自己去发觉了..加油!大大!!啊..忘了说了,求到时候发一份给我QwQ...
    perichr
        11
    perichr  
       2014-01-05 23:45:00 +08:00
    咳咳,求助(严肃地):请问这种时候我该如何吐槽?
    Sunyanzi
        12
    Sunyanzi  
       2014-01-07 18:31:33 +08:00
    @perichr P 酱!!!(抱大腿
    perichr
        13
    perichr  
       2014-01-10 00:43:05 +08:00
    @Sunyanzi 孙大大你好,向你学习口牙~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:11 · PVG 04:11 · LAX 12:11 · JFK 15:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.