PHP的 - 组阵列者皆 [英] php - Group array by key

查看:130
本文介绍了PHP的 - 组阵列者皆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组:

 阵列(
 A1=> 4,
 A2=大于5,
 B1=> 2,
 B2=大于7,
 C1=> 4,
 C 2=大于5,
 D1=> 4,
 D2=大于5,
  .....

现在我只想新的数组:

  $ ARR1 =阵列(A=>阵列(A1=> 4,A2=> 5),B=>阵列( B1=大于2,B2=>中7),...)$ ARR2 =阵列(
 0 =>阵列(A1=>中4,B1=大于2,C 1=→4,D1=→4),
 1 =>阵列(A2=>中4,B2=大于2,C 2=→4,D2=→4)

帮我,我怎么能组数组?谢谢


解决方案

  $ ARR =阵列(
 A1=> 4,
 A2=大于5,
 B1=> 2,
 B2=大于7,
 C1=> 4,
 C 2=大于5,
 D1=> 4,
 D2=大于5,
);ksort($改编,SORT_NATURAL);
$ ARR1 = $ ARR2 =阵列();
的foreach($改编为$关键=> $值){
    $信= SUBSTR($键,0,1);
    $指数=(INT)SUBSTR($键,1) - 1;    !使用isset($ ARR1 [$号])及和放大器; $ ARR1 [$号] =阵列();
    $ ARR1 [$函] [$关键] = $价值;    !使用isset($ ARR2 [$指数])及和放大器; $ ARR2 [$指数] =阵列();
    $ ARR2 [$指数] [$关键] = $价值;
}ksort($ ARR1,SORT_NATURAL);
ksort($ ARR2,SORT_NATURAL);后续代码var_dump($ ARR1,$ ARR2);

输出:

 阵列(4){
  [A] =>
  阵列(2){
    [A1] =>
    INT(4)
    [A2] =>
    INT(5)
  }
  [B] =>
  阵列(2){
    [B1] =>
    INT(2)
    [B2] =>
    INT(7)
  }
  [C] =>
  阵列(2){
    [C1] =>
    INT(4)
    [C2] =>
    INT(5)
  }
  [D] =>
  阵列(2){
    [D1] =>
    INT(4)
    [D2] =>
    INT(5)
  }
}
阵列(2){
  [0] =>
  阵列(4){
    [A1] =>
    INT(4)
    [B1] =>
    INT(2)
    [C1] =>
    INT(4)
    [D1] =>
    INT(4)
  }
  [1] =>
  阵列(4){
    [A2] =>
    INT(5)
    [B2] =>
    INT(7)
    [C2] =>
    INT(5)
    [D2] =>
    INT(5)
  }
}

I have an array:

array(
 "A1" => 4,
 "A2" =>5,
 "B1" => 2,
 "B2" =>7,
 "C1" => 4,
 "C2" =>5,
 "D1" => 4,
 "D2" =>5,
  .....
)

Now I just want to new array:

$arr1 = array("A"=>array("A1"=>4, "A2"=>5), "B" => array("B1" => 2, "B2" => "7"), ...)

$arr2 = array(
 0=>array("A1"=>"4","B1"=>2,"C1"=>4,"D1"=>4),
 1=>array("A2"=>"4","B2"=>2,"C2"=>4,"D2"=>4)
)

Help me, How can I group the array? Thanks

解决方案

$arr = array(
 "A1" => 4,
 "A2" =>5,
 "B1" => 2,
 "B2" =>7,
 "C1" => 4,
 "C2" =>5,
 "D1" => 4,
 "D2" =>5,
);

ksort($arr, SORT_NATURAL);
$arr1 = $arr2 = array();
foreach ($arr as $key => $value) {
    $letter = substr($key, 0, 1);
    $index = (int)substr($key, 1) - 1;

    !isset($arr1[$letter]) && $arr1[$letter] = array();
    $arr1[$letter][$key] = $value;

    !isset($arr2[$index]) && $arr2[$index] = array();
    $arr2[$index][$key] = $value;
}

ksort($arr1, SORT_NATURAL);
ksort($arr2, SORT_NATURAL);

var_dump($arr1, $arr2);

Outputs:

array(4) {
  ["A"]=>
  array(2) {
    ["A1"]=>
    int(4)
    ["A2"]=>
    int(5)
  }
  ["B"]=>
  array(2) {
    ["B1"]=>
    int(2)
    ["B2"]=>
    int(7)
  }
  ["C"]=>
  array(2) {
    ["C1"]=>
    int(4)
    ["C2"]=>
    int(5)
  }
  ["D"]=>
  array(2) {
    ["D1"]=>
    int(4)
    ["D2"]=>
    int(5)
  }
}
array(2) {
  [0]=>
  array(4) {
    ["A1"]=>
    int(4)
    ["B1"]=>
    int(2)
    ["C1"]=>
    int(4)
    ["D1"]=>
    int(4)
  }
  [1]=>
  array(4) {
    ["A2"]=>
    int(5)
    ["B2"]=>
    int(7)
    ["C2"]=>
    int(5)
    ["D2"]=>
    int(5)
  }
}

这篇关于PHP的 - 组阵列者皆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆