有这样的结构:
number是一个遍历出的数组,
number[0][id] 1 
number[0][code] 9,9,9number[1][id] 3
number[1][code] 5,5,5number[2][id] 1
number[2][code] 2,2,2number[2][id] 1
number[2][code] 2,2,2number[3][id] 3
number[3][code] 3,3,3
转换成这样的结构 :
ID:code | code #  ID :code | code 
就是像这样的字符串:
1:999 | 222 |222 # 3:555 | 333 
高分求解?

解决方案 »

  1.   

    number 是 "一个" 数组  怎么会有两个$number[2][id]?
      

  2.   

    你不是在javascript里面发过一个帖子了吗 怎么又在这发了一个 到底是php的数组还是javascript的数组啊
      

  3.   

    假设我在1#的问题是你写错了 那以下代码应该可以$num_arr = ...;  //你的数组//两次循环,第一次循环取出所有的id  第二次循环拼接字符串
    $id_arr = array();
    foreach($num_arr as $value1){
    if(!in_array($value1[id],$id_arr)){
    $id_arr[] = $value1['id']
    }
    }$res_str = "";
    foreach($id_arr as $key=>$id){
    $temp_arr = array();
    foreach($num_arr as $value2){
    if($value2['id'] == $id){
    $temp_arr[] = $value2['code];
    }
    }
    $res_str .= $id . ":" . implode("|",$temp_arr);
    if($key < count($id_arr)-1){
    $res_str .= "#";
    }
    }echo $res_str;
    如果就是那样的数组 那我就无能为力了...
      

  4.   

    额 我看了下js版你的问题下边的回复也都是把你的问题当成二维数组来处理...   不过你有两个$number[2][id],难不成是三维数组/....
      

  5.   

    number[0][id] 1 
    number[0][code] 9,9,9number[1][id] 3
    number[1][code] 5,5,5number[2][id] 1
    number[2][code] 2,2,2number[2][id] 1
    number[2][code] 2,2,2number[3][id] 3
    number[3][code] 3,3,3
    $result = array();
    foreach($number as $k => $v) {
      if (is_set($result[$v["id"]])) {
        array_push($result[$v["id"]], $v["code"]);
      } else {
        $result[$v["id"]] = array($v["code"]);
      }
    }$li = array();
    foreach ($result as $k => $v) {
      $li[] = $k . ":" . implode("|", $v); 
    }
    echo implode("#", $li);