PHP - 根据字段的值除以一个多维数组 [英] PHP - Divide a multidimensional array depending on a field's value

查看:183
本文介绍了PHP - 根据字段的值除以一个多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个初步的数组:

  $ arr0 =阵列(
    0 =>阵列(
        'A'=> 1,
        'B'=> 1
    )
    1 =>阵列(
        'A'=> 2,
        'B'=> 1
    )
    2 =>阵列(
        'A'=> 3,
        'B'=> 2
    )
    3 =>阵列(
        'A'=> 4,
        'B'=> 3
    )
    4 =>阵列(
        'A'=> 5,
        'B'=> 3
    )
);

我希望把它分成不同的阵列取决于其成员B'字段的值',像这样:

  // $ ARR1包含$ arr0 [0]和$ arr0 [1],因为他们的'B'的值是1。
$ ARR1 =阵列(
    0 =>阵列(
        'A'=> 1,
        'B'=> 1
    )
    1 =>阵列(
        'A'=> 2,
        'B'=> 1
    )
);// $ ARR2含有$ arr0 [2],因为它的B的值是2。
$ ARR2 =阵列(
    0 =>阵列(
        'A'=> 3,
        'B'=> 2
    )
);// $ ARR3含有$ arr0 [3]和$ arr0 [4],因为它们的b的值是3。
$ ARR3 =阵列(
    0 =>阵列(
        'A'=> 4,
        'B'=> 3
    )
    1 =>阵列(
        'A'=> 5,
        'B'=> 3
    )
);

现在,本场B可以拥有价值的自然数,所以它并不总是导致3阵列,我会需要的。

我已经找到了相关的问题(和答案)<一个href=\"http://stackoverflow.com/questions/1019076/how-to-search-by-key-value-in-a-multidimensional-array-in-php\">here,但我的问题是具体的,因为我事先不知道什么原始值'B'有吗,怎么不同的值多有。

任何想法?

(编辑:$ ARR3被写成$ ARR1)


解决方案

 的foreach($ arr0为$值){
  $ {常用3。 $值[B]} [] = $价值;
}
// $ ARR1,$ ARR2和$ ARR3定义

有在第二线,建立动态的变量名法宝。然而,编程的那种方式实在是笨拙的;你会做的更好,使结果到另一个阵列,像这样的:

 的foreach($ arr0为$值){
  $ allarr [$值['B'] [] = $价值;
}
// $ allarr定义

I have an initial array:

$arr0 = array(
    0 => array(
        'a' => 1,
        'b' => 1
    )
    1 => array(
        'a' => 2,
        'b' => 1
    )
    2 => array(
        'a' => 3,
        'b' => 2
    )
    3 => array(
        'a' => 4,
        'b' => 3
    )
    4 => array(
        'a' => 5,
        'b' => 3
    )
);

I wish to divide it into separate arrays depending on its members' value of the field 'b', like so:

// $arr1 contains $arr0[0] and $arr0[1] because their value of 'b' is 1.
$arr1 = array(
    0 => array(
        'a' => 1,
        'b' => 1
    )
    1 => array(
        'a' => 2,
        'b' => 1
    )
);

// $arr2 contains $arr0[2] because its value of 'b' is 2.
$arr2 = array(
    0 => array(
        'a' => 3,
        'b' => 2
    )
);

// $arr3 contains $arr0[3] and $arr0[4] because their value of 'b' is 3.
$arr3 = array(
    0 => array(
        'a' => 4,
        'b' => 3
    )
    1 => array(
        'a' => 5,
        'b' => 3
    )
);

Now, the field 'b' can have any natural number for value, so it is not always three resulting arrays that I will need.

I have found a related question (and answers) here, but my problem is specific because I don't know in advance what original values 'b' has, and how many of different values there are.

Any ideas?

(edit: $arr3 was written as $arr1)

解决方案

foreach ($arr0 as $value) {
  ${"arr" . $value['b']}[] = $value;
}
// $arr1, $arr2 and $arr3 are defined

There is magic in the second line, which dynamically builds a variable name. However, that way of programming is really unwieldy; you would do better to make the results into yet another array, like this:

foreach ($arr0 as $value) {
  $allarr[$value['b']][] = $value;
}
// $allarr is defined

这篇关于PHP - 根据字段的值除以一个多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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