服务器提供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)
);
写了一大饼代码都没实现这种形式的....
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)
);
写了一大饼代码都没实现这种形式的....
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
))
$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
))
哇 太厉害了 几行代码搞定 崇拜的五体投地啊 有key这个函数啊 平时都没有用到过。哦忘记说了 Result num is:511中的511不是固定的 是动态的 以及'A7365' => ,如果为空的话就然它为空 xuzuning的给取消了 jzh2004的给为0了 我这里空和0是有很大2区别啊。。
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
))