Php 如何从数组中创建多维数组并执行筛选?

Php 如何从数组中创建多维数组并执行筛选?,php,multidimensional-array,Php,Multidimensional Array,我的目标是将所有数组值保存在另一个数组中,但我不知道如何才能做到这一点。 下面是我的简单数组: $grand_total = $total + $cost; $cost_ratio = ($cost/$grand_total) * 100; $paid_ratio = ($total/$grand_total) * 100; $info[] = array( 'id' => $data['id'], 'ratio' => $cos

我的目标是将所有数组值保存在另一个数组中,但我不知道如何才能做到这一点。 下面是我的简单数组:

$grand_total = $total + $cost;
$cost_ratio = ($cost/$grand_total) * 100;
$paid_ratio = ($total/$grand_total) * 100;

$info[] = array(
             'id' => $data['id'],
             'ratio' => $cost_ratio,
             'status' => $status 
          );
这是我的示例数组输出

Array
(
[0] => Array
    (
        [id] => 53
        [ratio] => 100
        [status] => C
    )

[1] => Array
    (
        [id] => 57
        [ratio] => 100
        [status] => I
    )

[2] => Array
    (
        [id] => 60
        [ratio] => 1.3157894736842
        [status] => I
    )
创建数组后,下一步要做的是通过获取比率来过滤。 正如您在上面看到的,我有一个变量
$cost\u ratio
,这个变量将过滤我的数组

下面是我代码的延续:

 //declare a variable
 $var1 = 0;
 $var2 = 0;
 $var3 = 0;
 $var4 = 0;
 $var5 = 0;
 $var6 = 0;
 $var7 = 0;
 $var8 = 0;
 $var9 = 0;
 $var10 = 0;
之后

  for($x = 0; $x < sizeof($info); $x++){

            $status_info = $info[$x]['status'];
            $temp = $info[$x]['ratio'];

            /*this will set my filter*/

            /*if temp <= 9, i need to put all of my array that has a ratio <= 9*/

            if($temp <= 9){
                $var1++;
            }else if($temp <= 19){
                $var2++;
            }else if($temp <= 29){
                $var3++;
            }else if($temp <= 39){
                $var4++;
            }else if($temp <= 49){
                $var5++;
            }else if($temp <= 59){
                $var6++;
            }else if($temp <= 69){
                $var7++;
            }else if($temp <= 79){
                $var8++;
            }else if($temp <= 89){
                $var9++;
            }else{
                $var10++;
            }

      }

这正是我想做的,但我很难做到这一点。

您可以通过执行以下操作轻松地对阵列进行分组:

$array = array(
    array( 'id' => 53, 'ratio' => 100, 'status' => 'I'),
    array( 'id' => 54, 'ratio' => 50, 'status' => 'C'),
    array( 'id' => 56, 'ratio' => 42, 'status' => 'D')
);

// Grouping array by ratio
$group = array();
foreach($array as $value) {
    $groupIndex = min($value['ratio'] / 10, 9);
    $group[$groupIndex][] = $value;
}

var_dump($group);
下面是示例输出

array (size=3) 9 => array (size=1) 0 => array (size=3) 'id' => int 53 'ratio' => int 100 'status' => string 'I' (length=1) 5 => array (size=1) 0 => array (size=3) 'id' => int 54 'ratio' => int 50 'status' => string 'C' (length=1) 4 => array (size=1) 0 => array (size=3) 'id' => int 56 'ratio' => int 42 'status' => string 'D' (length=1)
这是一个相当长的问题,让人困惑你想做什么。您想在特定范围内分组
比率
,还是问题是其他?是的,我想按比率值分组在按比率分组数组中,我需要更改/10,9的值吗?取决于您想要什么,如果您想按10分组比率,您应该坚持我的代码。
$array = array(
    array( 'id' => 53, 'ratio' => 100, 'status' => 'I'),
    array( 'id' => 54, 'ratio' => 50, 'status' => 'C'),
    array( 'id' => 56, 'ratio' => 42, 'status' => 'D')
);

// Grouping array by ratio
$group = array();
foreach($array as $value) {
    $groupIndex = min($value['ratio'] / 10, 9);
    $group[$groupIndex][] = $value;
}

var_dump($group);
array (size=3) 9 => array (size=1) 0 => array (size=3) 'id' => int 53 'ratio' => int 100 'status' => string 'I' (length=1) 5 => array (size=1) 0 => array (size=3) 'id' => int 54 'ratio' => int 50 'status' => string 'C' (length=1) 4 => array (size=1) 0 => array (size=3) 'id' => int 56 'ratio' => int 42 'status' => string 'D' (length=1)
$group[0]   <--- from 0 to 9
$group[1]   <--- from 10 to 19
$group[2]   <--- from 20 to 29
$group[3]   <--- from 30 to 39
$group[4]   <--- from 40 to 49
$group[5]   <--- from 50 to 59
$group[6]   <--- from 60 to 69
$group[7]   <--- from 70 to 79
$group[8]   <--- from 80 to 89
$group[9]   <--- from 90+