PHP小TIPS

背景:

页面上有一个 selected 控件,控件中的 options 是在配置文件中定义的。


<select id="form_receipts" name="form[receipts]">
    <option value="">--收益率--</option>
    <option value="1">小于3.0%</option>
    <option value="2">3.0 ~ 4.5%</option>
    <option value="3">4.5 ~ 5.5%</option>
    <option value="4">大于5.5%</option>
</select>



一开始考虑到收益的范围可能会调整,所以在配置文件中定义了。


这样,在逻辑处理的时候,就不能在代码里写死,最好从配置文件中获取各个 value 对应的 字段,然后根据字段的范围生成查询条件。

--------------------------------------------------

OK,获取页面传过来的 option 的 Text("小于3.0%"、"3.0 ~ 4.5%"等)

意图通过正则表达式获取“3.0%”、“4.5%”等字段,然后作为 where 中的条件

这里用到了 preg_match_all()

这个方法是尝试匹配字符串中所有的匹配项,并存储在array()中

我的代码:

preg_match_all("/[0-9.]+/u",$strSelectedParameter,$matches);



匹配到的结果类似:
Array
(
    [0] => Array
        (
            [0] => 3.0
            [1] => 4.5
        )

)



这时候取第二维数组中的两个值就好了,

可以通过 count() 函数判断数组中元素的个数,count() 的第二个参数表示是否统计多维数组(默认为0——不统计)。上例的结果通过 count($matches,1) 返回的值为3,也就是说第一维数组有一个元素,第二维数组有两个元素。

然后比较第二维数组中两个元素的大小放到between中应该就可以了....

等等,哪里不对。。。如何区别 3.0 和 5.5 如何使用大于小于?。。。

好吧,这个想法行不通。。。

还是乖乖写死吧。。。又一段垃圾代码。。。

我想知道你们遇到这样的情况都如何抉择的

你可能感兴趣的:(数组,正则,count,preg_match_all,元素个数)