循环体求助

#1 SunPSP

findSql之后得到一个数组,dump结果为(为方便就留了一个元素)
Array
(
[7] => Array
        (
            [uuid] => 38b32bb3
            [label] => 记录
            [upper] => cd065843,a1d75dcb
        )

其中,upper键包含了多个值,例子中为cd065843与a1d75dcb,用','分割开
现在的需求为根据upper键中的其中一个值判断是否输出

设想通过in_array函数来实现
但是in_array匹配的是键整个值cd065843,a1d75dcb
而无法匹配其中之一cd065843或者a1d75dcb
写了这么个循环希望能把二维数组转换成三维数组然后再使用in_array
$this->label=array();
  foreach($this->labels as $key=>$this->label){
   $this->label[$key][uuid]=$this->labels[$key][uuid];
   $this->label[$key][label]=$this->labels[$key][label];
   $this->label[$key][upper]=explode(',',$this->labels[$key][upper]);
  }
尝试多次之后都无法达到希望的结果
求助如何写这个循环体实现二维数组转换成三维数组

又或者有其他方法实现我的这个需求

2013-04-22 16:44:01

#2 jake

upper 用序列化函数来存储,变回数组的时候再反序列化。

2013-04-22 17:08:27

#3 SunPSP

jake 发表于 2013-4-22 17:08
upper 用序列化函数来存储,变回数组的时候再反序列化。
使用序列化在取出数据之后同样需要通过循环来对该键进行反序列化
而使用‘,’分割多个字符需要使用explode来处理
两者流程基本一致

问题已解决,是循环体写的不对
通过参考教程的高级模型写法解决了
附上代码
$labels=$this->obj->findSql($sql);
  foreach($labels as $key=>$label){
   $labels[$key]['upper']=explode(',',$labels[$key]['upper']);
  }
  $this->labels=$labels;

J大帮忙结贴,不想再被鄙视

2013-04-22 17:52:07