将关联数组转换为不同的数组结构

时间:2013-10-03 10:50:26

标签: php arrays associative-array

我有以下数组,它在值“/”中有一些额外的字符。

Array
(
    [ID1] => 362/2
    [ID2] => 589/3
    [ID3] => 697/4
    [ID4] => 111/5
    [ID5] => 422/6
)

我想要实现和获得的内容如下

Array
(
    [ID1] => 362
    [ID1] => 2
    [ID2] => 589
    [ID2] => 3
    [ID3] => 697
    [ID3] => 4
    [ID4] => 111
    [ID4] => 5
    [ID5] => 422
    [ID5] => 6
)

并且,我试图在php中编写脚本来解决上述问题......

        $exp = array();
        foreach ($value as $val) {
            $pl = explode('/', $val);
            $exp[] = $pl[0] ."=>".$pl[1];
        }

         print_arr($exp);

但是,我得到了以下结果,其中它是错误的......

Array
(
    [0] => 362=>2
    [1] => 589=>3
    [2] => 697=>4
    [3] => 111=>5
    [4] => 422=>6
)

我该怎么办?请帮忙吗?

2 个答案:

答案 0 :(得分:1)

使用相同的密钥不可能有多个值。

对您来说,最好的解决办法可能是:

$exp = array();
foreach ($value as $id => $val) {
  list($first, $second) = explode('/', $val);
  $exp[$id] = array(
    'first'  => $first,
    'second' => $second
  );
}

所以在输出中你会得到:

array(
  'id1' => array(
    'first'  => 362,
    'second' => 2
  ),
  ...
)

答案 1 :(得分:1)

$exp = array();
$i=1;
    foreach ($value as $val) {
        $pl = explode('/', $val);
        $exp['id'.$i][] = $pl[0];
        $exp['id'.$i][] = $pl[1]; 
        $i++;
    }

您的预期数组有重复的密钥,这是不可能的