今天写一个分析sql的函数,需要把里面的字段值等分析出来。
字符串好分析,就分析两端的引号即可, 数字(整数和浮点数)就有点麻烦了,用了一个简单的状态机。
字符串的取得老早就正确了,但是数字的结果老是错误的,
其实就是没取得数字,我就很纳闷,把if到符合数字部分的字符全打印了出来。
结果除了前面正确截取的字符串段,其他的都打印出来了,我简直要怀疑我是不是echo的位置打错了。
那地方的代码是这样
...
$digits=range(0,9);
...
if(in_array($w,$digits)){
...
}
于是我怀疑是in_array函数的问题,于是我做了个实验
echo in_array('s',range(0,9));//结果是1
果然是它的问题,所有字符都是返回true的...
于是我自己写了一个
function inarray($enum,$array){
foreach($array as $e){
if($e==$enum){
return true;
}
}
return false;
}
结果还是一样的,这时我突然想到会不会是比较的时候类型不同所致
做了一个实验
echo 's'+0;//结果是0
可以猜想,php在字符串和数字比较的时候自动把字符串转换成数字,然后比较数值。而非0-9的其他字符则会被转换为0,所以所有的字符都返回true了。
想到这点,我有了思路,把上面函数稍微修改下就好了
function inarray($enum,$array){
foreach($array as $e){
if(($e.'')==$enum){
return true;
}
}
return false;
}
分享到:
相关推荐
js的in_array函数
**PHP in_array 函数详解** `in_array()`是PHP中一个非常实用的内置函数,用于在数组中查找指定的值。如果找到该值,它会返回`TRUE`,否则返回`FALSE`。这个函数在处理数据验证、过滤或判断元素是否存在于数组中时...
这就解释了为什么在使用in_array函数时,尽管's'和0类型不同,但var_dump(in_array(0,array('s','ss')))的结果返回bool(true)。 为了应对PHP的这种类型转换问题,我们应当在比较时使用严格比较运算符===而不是非...
为了实现类似的功能,我们可以自定义一个`in_array`函数。以下是对这个自定义`in_array`函数的详细解释: 首先,我们需要定义一个函数`in_array`,它接受一个参数`arr`,即我们要检查的数组。在这个函数中,我们...
关于 `in_array()` 函数的一些关键点: - **大小写敏感**:如果 `$needle` 是字符串,`in_array()` 的比较是区分大小写的。这意味着 "abc" 和 "ABC" 被视为不同的值。 - **版本限制**:在 PHP 4.2.0 之前的版本,`$...
然而,在处理大量数据时,原生的in_array函数可能会因为性能问题而变得效率低下。这是因为in_array是通过遍历数组的方式来查找值,当数组元素数量较多时,其时间复杂度为O(n),如果数组很大,就需要花费较多的时间...
为了提高效率,可以考虑使用`array_flip`函数结合`isset`来替代`array_search`和`in_array`。`array_flip`函数将数组中的键和值互换,这样就可以通过值来查找键,而无需遍历整个数组。使用`isset`检查值是否存在,其...
首先,`in_array`函数的基本语法是 `in_array(search, array, strict)`,其中`search`是要查找的值,`array`是被搜索的数组,`strict`是一个可选参数,用来指定是否启用严格模式进行类型匹配。默认情况下,`strict`...
以下是对`in_array()`函数的详细说明: **函数定义与返回值** `in_array(value, array, type)`函数接收三个参数: 1. `value`:这是你要在数组中搜索的值。 2. `array`:被搜索的数组,即你想要检查其中是否包含`...
1. 数据类型匹配规则:in_array函数在进行匹配时,如果设置$strict为false(默认情况),则当$needle是字符串而$haystack中的元素是数字,或者反之,函数仍会返回true。也就是说,in_array函数在非严格模式下,不会...
在本文中,将对in_array函数的用法进行详细分析,并结合实例讲解在使用这个函数时需要注意的一些细节,以便于读者更好地理解和应用。 首先,需要了解的是in_array函数的基本语法结构,它包含三个参数: 1. 第一个...
以下就是如何自定义`in_array`函数的几种方法: **方法1:基础循环检查** 这是最直观和基础的实现方式,通过遍历数组并比较每个元素是否等于目标值。 ```javascript Array.prototype.in_array = function(e) { ...
然而,我们可以通过自己编写函数来模拟in_array函数的功能。 以下是一些自定义的in_array函数的示例实现: 第一个示例函数名为`in_array`,它通过遍历数组来查找特定值。这个函数只接受字符串类型的参数。如果有...
本文实例讲述了PHP使用in_array函数检查数组中是否存在某个值的方法。分享给大家供大家参考。具体分析如下: PHP使用in_array()函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE了,非常的好用...
最终,作者通过增加in_array函数的第三个参数为true来解决这个问题,确保只有在类型和值都匹配时,in_array才会返回true。 通过本文的学习,我们了解到了PHP中in_array函数使用时需要谨慎处理的隐式类型转换问题,...
本文实例讲述了php提示Warning mysql_...mysql_fetch_array()函数导致的,下面我们一起来看问题解决方案,我的代码如下: 复制代码 代码如下:include(“conn.php”); if(!empty($_GET[‘id’])){ $sql=”select * fr