php – 使用str_replace和数组切换文本
这是我刚刚发现的有关str_replace()的有趣内容.
在我的函数中,我需要进行两个 mysql查询,这些查询与排序结果的细微变化相同.作为一个参数,我得到包含一个order子句的字符串,例如’surname ASC’,但它也可以是’surname DESC’.现在我想使用str_replace轻松切换到反向排序,我认为这应该可以解决问题: str_replace(array('ASC','DESC'),array('DESC','ASC'),$subject) 在我看来,它应该改变所有出现的ASC与DESC以及所有出现的DESC与ASC.由于字符串只包含两个中的一个我应该得到反转顺序子句. 我做了一些测试,并且它告诉我们这些调用会按照您的要求执行: str_replace('ASC','DESC',$subject) str_replace(array('ASC'),array('DESC'),这很奇怪,因为array('ASC','DESC') != array('DESC','ASC') 解决方法
在这种情况下,您可以像这样使用
strtr :
strtr($subject,array('ASC' => 'DESC','DESC' => 'ASC')); 这将有效,因为
See it in action. 使用str_replace会发生什么,正如您已经发现的那样,第一个ASC被DESC替换,然后DESC被替换回ASC,总共没有做任何事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |