服务器提供SOAP接口 返回数组格式是二维数组这样的:
Array
(
    [0] => Array
        (
            [Result num is:511] => 
            [time] => 201001010200
        )    [1] => Array
        (
            [A7365] => 1
            [time] => 201001010200
        )    [2] => Array
        (
            [A8013] => 1
            [time] => 201001010200
        )
  [3] => Array
        (
            [Result num is:511] => 
            [time] => 201001010800
        )    [4] => Array
        (
            [A7365] => 2
            [time] => 201001010800
        )    [5] => Array
        (
            [A8013] => 1
            [time] => 201001010800
        )
............同上省略
)
怎样将上面变成这种格式的?
array(
'201001010200'=>array('A7365'=>1,'A8013'=>1),
'201001010800'=>array('A7365'=>2,'A8013'=>1)
);
写了一大饼代码都没实现这种形式的....

解决方案 »

  1.   

    key如果是Result num is:511是不是在要的结果里忽略掉?
      

  2.   

    $ar = array(
      array(
        'Result num is:511' =>  '',
        'time' => 201001010200,
      ),
      array(
        'A7365' => 1,
        'time' => 201001010200,
      ),
      array(
        'A8013' => 1,
        'time' => 201001010200,
      ),
      array(
        'Result num is:511' =>  '',
        'time' => 201001010800,
      ),
      array(
        'A7365' => 2,
        'time' => 201001010800,
      ),
      array(
        'A8013' => 1,
        'time' => 201001010800,
      ),
    );foreach($ar as $r) {
      foreach($r as $k=>$v) {
        if($k == 'time') {
          $key = $v;
          continue;
        }
        if(empty($v)) {
          continue;
        } else {
          $out["$key"][$k] = $v;
        }
      }
    }print_r($out);
    Array
    (
        [201001010200] => Array
            (
                [A7365] => 1
                [A8013] => 1
            )    [201001010800] => Array
            (
                [A7365] => 2
                [A8013] => 1
            ))
      

  3.   


    $a =Array
    (
      "0" => Array
      (
      "Result num is:511" => '',
      "time" => "201001010200"
      ),  "1" => Array
      (
      "A7365" => 1,
      "time" => "201001010200"
      ),  "2" => Array
      (
      "A8013" => 1,
      "time" => "201001010200"
      ),
      "3" => Array
      (
      "Result num is:511" => '',
      "time" => "201001010800"
      ),  "4" => Array
      (
      "A7365" => 2,
      "time" => "201001010800"
      ),  "5" => Array
      (
      "A8013" => 1,
      "time" => "201001010800"
      )
    );
    $arr = array();
    foreach ($a as $val)
    {
    if(key($val) == "Result num is:511")
    {
    continue;
    }
    else
    {
    $arr[$val["time"]][key($val)] = $val[key($val)];
    }
    }echo "<pre>";
    print_r($arr);
    echo "</pre>";
    得到结果
    Array
    (
        [201001010200] => Array
            (
                [A7365] => 1
                [A8013] => 1
            )    [201001010800] => Array
            (
                [A7365] => 2
                [A8013] => 1
            ))
      

  4.   

    ?没有回复起?
    哇 太厉害了 几行代码搞定 崇拜的五体投地啊 有key这个函数啊 平时都没有用到过。哦忘记说了 Result num is:511中的511不是固定的 是动态的 以及'A7365' => ,如果为空的话就然它为空 xuzuning的给取消了 jzh2004的给为0了 我这里空和0是有很大2区别啊。。
      

  5.   

    我这里没有为0,如果是空他还是输出空
    511不是固定的话就判断下他前面的字符串是否在KEY中存在$a =Array
    (
      "0" => Array
      (
      "Result num is:511" => '',
      "time" => "201001010200"
      ),  "1" => Array
      (
      "A7365" => '',
      "time" => "201001010200"
      ),  "2" => Array
      (
      "A8013" => 1,
      "time" => "201001010200"
      ),
      "3" => Array
      (
      "Result num is:511" => '',
      "time" => "201001010800"
      ),  "4" => Array
      (
      "A7365" => 2,
      "time" => "201001010800"
      ),  "5" => Array
      (
      "A8013" => 1,
      "time" => "201001010800"
      )
    );
    $arr = array();
    foreach ($a as $val)
    {
    if(strpos(key($val),"Result num is:") !== false)
    {
    continue;
    }
    else
    {
    $arr[$val["time"]][key($val)] = $val[key($val)];
    }
    }echo "<pre>";
    print_r($arr);
    echo "</pre>";结果:
    Array
    (
        [201001010200] => Array
            (
                [A7365] => 
                [A8013] => 1
            )    [201001010800] => Array
            (
                [A7365] => 2
                [A8013] => 1
            ))