如何以不同的顺序对数组进行排序

时间:2013-09-03 12:30:25

标签: php arrays sorting search

我有一个看起来像这样的数组。

Array
(

[0] => Array
    (
        [cartId] => 667
        [isPack] => 1
    )

[1] => Array
    (
        [cartId] => 668
        [isPack] => 1
    )

[2] => Array
    (
        [cartId] => 672
        [isPack] => 2
    )

[3] => Array
    (
        [cartId] => 673
        [isPack] => 2
    )

)

我想通过isPack元素创建一个数组,它应该看起来像这样。

Array (

[1] => Array
    (

       [0] => Array
            (
                [cartId] => 667
            )

        [1] => Array
            (
                [cartId] => 668
            )

    )
  [2] => Array
    (
        [0] => Array
            (
                [cartId] => 672
            )

        [1] => Array
            (
                [cartId] => 673
            )
    )  
 )

数组二将是两个数组,其中isPack将是数组键,其他信息将属于其子数组。

我该怎么做? 提前谢谢:)

2 个答案:

答案 0 :(得分:0)

尝试:

$input  = array( /* your data*/ );
$output = array();

foreach ( $input as $data ) {
  $isPack = $data['isPack'];
  $cartId = $data['cartId'];

  if ( !isset($output[$isPack]) ) {
    $output[$isPack] = array();
  }
  $output[$isPack][] = array(
    'cartId' => $cartId
  );
}

答案 1 :(得分:0)

  $new=array();
     $arr = array( array('cartId' => 667,'isPack' => 1),array('cartId' => 668,'isPack' => 1),array('cartId' => 672,'isPack' => 2),array('cartId' => 673,'isPack' => 2));
     for($i=0;$i<count($arr);$i++) {
          $l = $arr[$i]['isPack'];
     $new[$l][]['catid']= $arr[$i]['cartId'];
     }
     print_r($new);

并输出: -

Array
(
    [1] => Array
        (
            [0] => Array
                (
                    [catid] => 667
                )

            [1] => Array
                (
                    [catid] => 668
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [catid] => 672
                )

            [1] => Array
                (
                    [catid] => 673
                )

        )

)