首页 > 解决方案 > 使用循环在数组中收集所需数据不起作用

问题描述

我有两个不同的数组,第一个是 types_array,第二个是 result_array。我想根据 types_array 中的类型从 result_array 收集数据并放入新数组中。它只匹配 types_array 中索引的第一条记录,而不匹配其他记录。我在得到结果时直接添加数组,以便您更好地理解。

类型数组

Array          
(
 [0] => class
 [1] => late_fine
 [2] => exam_fees
)

结果数组

Array          
(
  [0] => stdClass Object
    (
        [unit_name] => class 1
        [price] => 10
        [type] => class
    )

  [1] => stdClass Object
    (
        [unit_name] => class 1
        [price] => 10
        [type] => class
    )

  [2] => stdClass Object
    (
        [unit_name] => late fine
        [price] => 50
        [type] => late_fine
    )

  [3] => stdClass Object
    (
        [unit_name] => late fine
        [price] => 40
        [type] => late_fine
    )
 )

结果我得到

  Array      
  (
    [class] => Array
    (
        [name] => class 1
        [0] => 10
        [1] => 10
        [2] => 10
    )
 )

我期待的结果

  Array       
  (
    [class] => Array
    (
        [name] => class 1
        ['price'] => 20

    )

    [late_fine] => Array
    (
        [name] => late fine
        ['price'] => 100

    )

 )

我的代码

$i=0;
$x=0;
$types_array = array_values(student_payment_types());

while($x < count($types_array)){

    while($i < count($result_array)){

        if( $types_array[$x] == $result_array[$i]->type ){

            $data_array[$types_array[$x]]['name'] = $result_array[$i]->unit_name;
            $data_array[$types_array[$x]][] += (int)$result_array[$i]->price;

        }

        $i++;
    }

    unset($types_array[$x]);
    array_values($types);

    $x++;
}

标签: phparraysloops

解决方案


哦,我想我明白了,我犯了一个愚蠢的错误,当我退出内部循环时,我需要将 $i 设置回零。


推荐阅读