日期:2012-02-24  浏览次数:20498 次

一般从数据循环出来的选框要处理是否被选中都是使用IF去判断,结果造成代码一堆,速度过慢。

我做了一个闭包分享给大家,希望对大家有用。

代码:
  1. function ifNumExists($numList,$key) {
  2. $return = false;
  3. $arraylist = split(",", $numList);
  4. $Length = count($arraylist)-1; //最后一个数组结果为空,所以应当减去。
  5.         for ($i=0;$i<$Length;$i++){
  6.                 if ($arraylist[$i] == $key) {
  7.                         $return = true;
  8.                 }
  9.         }
  10.         return $return;
  11. }

使用方法:
  1. ifNumExists(数组,当前单选框对应ID)

表结构:
单选框循环表(A):
id   class
1   类别1
2   类别2
3   类别3
4   类别4

单选值存放表(B):
id   classid
1   1,2,3,
2   2,3,4,
3   1,2,

当循环表A,判断是否当前input是否被选中,那么我们就可以使用
ifNumExists(classid,表Aid),返回的结果为true或者false,根据返回的结果我们给input增加或者不增加 checked="checked"。
如:
  1. if (ifNumExists(classid,$value['id'])) {
  2.  $list = $list."<input type=\"checkbox\" name=\"SendNums[]\" value=\"".$value['id']."\" checked=\"checked\" />".$value['class']."</li>";
  3. }else{
  4.  $list = $list."<input type=\"checkbox\" name=\"SendNums[]\" value=\"".$value['id']."\" />".$value['class']."</li>";
  5. }
  6. return $list;