Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach数组爆炸量总计_Php_Arrays - Fatal编程技术网

Php Foreach数组爆炸量总计

Php Foreach数组爆炸量总计,php,arrays,Php,Arrays,这是我的数组,如果它们在一起,我需要添加所有数量,例如1000 | 1000 Array ( [0] => stdClass Object ( [student_no] => 8080808128 [amt] => 1000|1000 [main_receipt] => M_0000000001 )

这是我的数组,如果它们在一起,我需要添加所有数量,例如1000 | 1000

  Array
    (
        [0] => stdClass Object
            (
                [student_no] => 8080808128
                [amt] => 1000|1000
                [main_receipt] => M_0000000001
            )

        [1] => stdClass Object
            (
                [student_no] => 8080808128
                [amt] => 500
                [main_receipt] => M_312312321
            )

        [2] => stdClass Object
            (
                [student_no] => 8569544855
                [amt] => 500
                [main_receipt] => M_000000026
            )

        [3] => stdClass Object
            (
                [student_no] => 9172544146
                [amt] => 1000
                [main_receipt] => M_00000001234
            )

        [4] => stdClass Object
            (
                [student_no] => 9541256358
                [amt] => 1000|1000|500
                [main_receipt] => M_000000022
            )

        [5] => stdClass Object
            (
                [student_no] => 9892469054
                [amt] => 1000
                [main_receipt] => M_0000000002
            )

    )

$newar=0;
foreach($fa as $key){

       $temp= explode('|',$key->amt);
foreach($temp as $tem =>$va){
echo $va."<br>";
  $newar += $va;
    $array[]=$newar;
请注意[0]键数组中的amount值是如何合计的。我试图解释这种类型的数组,但我似乎无法理解逻辑


我知道我当前的逻辑只是在|出现时添加数组的每个键的值

分割您的金额,并使用数组_sum()计算总和


当|出现时分割您的金额,并使用数组_sum()


您需要将
$newar
设置回
0
,然后才能循环使用分解的金额。否则,将所有对象的数量相加。您也可以使用
array\u sum()
将分解金额的所有元素相加

如果要在新数组中创建对象,则需要创建对象,而不仅仅是将总数存储在数组中

foreach ($fa as $obj) {
    $temp = explode('|', $obj->amt);
    $newar = array_sum($temp);
    $newobj = clone $obj;
    $newobj->amt = $newar;
    $array[] = $newobj;
}

您需要将
$newar
设置回
0
,然后才能循环使用分解的金额。否则,将所有对象的数量相加。您也可以使用
array\u sum()
将分解金额的所有元素相加

如果要在新数组中创建对象,则需要创建对象,而不仅仅是将总数存储在数组中

foreach ($fa as $obj) {
    $temp = explode('|', $obj->amt);
    $newar = array_sum($temp);
    $newobj = clone $obj;
    $newobj->amt = $newar;
    $array[] = $newobj;
}

根据你的目标:

“要构造一个新数组,其中金额为总计”

将以下解决方案与
array\u map
strpos
(检查
amt
属性中是否有分隔符
,以避免重复拆分)和
array\u sum
函数一起使用:

// $arr is your initial array
$new_arr = array_map(function($obj){
    $obj->amt = (strpos($obj->amt, "|") !== false)? array_sum(explode("|", $obj->amt)) : $obj->amt;
    return $obj;
}, $arr);

print_r($new_arr);

根据你的目标:

“要构造一个新数组,其中金额为总计”

将以下解决方案与
array\u map
strpos
(检查
amt
属性中是否有分隔符
,以避免重复拆分)和
array\u sum
函数一起使用:

// $arr is your initial array
$new_arr = array_map(function($obj){
    $obj->amt = (strpos($obj->amt, "|") !== false)? array_sum(explode("|", $obj->amt)) : $obj->amt;
    return $obj;
}, $arr);

print_r($new_arr);

请添加您尝试过的示例。数组_sum(explode('|',$obj->amt))?@Eihwaz。我要试试……我有。在提供的第一个数组IV下面,那么您的问题是什么?请添加您尝试过的示例。数组_sum(explode('|',$obj->amt))?@Eihwaz。我要试试……我有。在提供的第一个数组IV下面那么您的问题是什么?