帮助需要重组php数组

时间:2011-06-24 04:05:01

标签: php arrays

我想知道是否有人可以帮助我重构预定义的php数组。我当前数组的输出是:

Array
(
    [71-ctns] => 1
    [71-units] => 1
    [308-units] => 1
    [305-ctns] => 1
    [306-units] => 2
)

我希望它看起来像:

Array
(
    [71] => Array
        (
            [ctns] => 1
            [units] => 1
        )
    [308] => Array
        (
            [units] => 1
        )

    [305] => Array
        (
            [ctns] => 1
        )
    [306] => Array
        (
            [units] => 2
        )
)

这可能吗?

3 个答案:

答案 0 :(得分:2)

这应该这样做

$merged = array();
foreach($a as $k=>$v){
    $t = explode('-',$k);
    $id = intval($t[0]);
    if(!array_key_exists($id, $merged))
        $merged[$id] = array();
    $merged[$id][$t[1]] = $v;
}

编辑:

很抱歉,您应该使用explode而不是split。

答案 1 :(得分:1)

是的,但你需要循环(注意:array_map也可以工作,但这个例子更明确):

$fin = array();
foreach( $complex as $item => $val ) 
{
    $pieces = explode('-', $item);
    $fin[$pieces[0]] = isset($fin[$pieces[0]])?:array();
    $fin[$pieces[0]][$pieces[1]] = $val;
}

答案 2 :(得分:1)

找到以下代码来重构预定义的php数组

<?php
$newArray=array();
$result = array("71-ctns"=>1,"71-units"=>1,"308-ctns"=>1,"308-units"=>1,"305-units"=>1,"306-units"=>2);
if(is_array($result) && count($result)>0) {
    foreach($result as $key=>$val) {
        $getKeyArray = explode("-",$key);
        $newArray[$getKeyArray[0]][$getKeyArray[1]] =$val;      
    }
}
print"<pre>";
print_r($newArray);
?>