PHP重建数组

时间:2012-11-08 16:25:32

标签: php arrays

我需要重建一个数组。这是原始数组:

array(8) {
      [0] => array(1)
      {
            ["L_TRANSACTIONID0"] => string(17) "62M97388AY676841D"
      }

      [1] => array(1)
      {
            ["L_TRANSACTIONID1"] => string(17) "9FF44950UY3240528"
      }

      [2] => array(1)
      {
            ["L_STATUS0"] => string(9) "Completed"
      }

      [3] => array(1)
      {
            ["L_STATUS1"] => string(9) "Completed"
      }
}

我想重建它:

array(2) {
      [0] => array(2)
      {
            ["L_TRANSACTIONID0"] => string(17) "62M97388AY676841D"
            ["L_STATUS0"] => string(9) "Completed"
      }
      [1] => array(1)
      {
            ["L_TRANSACTIONID1"] => string(17) "9FF44950UY3240528"
            ["L_STATUS1"] => string(9) "Completed"
      }
}

请注意,KEYS都与数字表示匹配......这可能吗?

编辑:

这是我正在使用的代码:

        foreach($comparison as $key => $val) {
        $findme1 = 'L_TRANSACTID'.$i++;
        $findme2 = 'L_STATUS'.$c++;
        $arrDisable = array($findme1,$findme2);
        if( in_array($key, $arrDisable ) ) {
          unset( $comparison[ $key ][$val]);
        }
            if( in_array($key, $arrDisable) ) {
        unset( $comparison[ $key ][$val]);
        }
      }

2 个答案:

答案 0 :(得分:1)

试试这个

$labels = array('L_TRANSACTIONID', 'L_STATUS');
$res = array();
foreach($arr as $val) {
  $key = str_replace($labels, '', key($val));
  $res[$key] = isset($res[$key]) ? array_merge($res[$key], $val) : $val;
}
print_r($res);

http://codepad.org/MwqTPqtA

答案 1 :(得分:0)

如果您确定向量币对L_TRANSACTIONIDn / L_STATUSn键,也就是说,对于每个transactionID,都有相应的状态,您可以做的是获取id / status记录的数量(应该是等于初始数组的长度,除以2),并通过增加当前元素数来组成结果键。

看起来像这样:

$numItems = sizeof($myInitialArray) / 2;
$newArray = array();

for($i = 0; $i < $numItems; $i++)
{
    $itemID = $i * 2; // since we're getting id/status pairs, we're using a step equal to 2

    $newArray[] = array(
        ("L_TRANSACTIONID" . $i) => $myInitialArray[$itemID], // this is the id value
        ("L_STATUS" . $i) => $myInitialArray[$itemID + 1] // this is the status for that id
    );
}

希望这会有所帮助。祝你有美好的一天!