Php Foreach数组爆炸量总计
这是我的数组,如果它们在一起,我需要添加所有数量,例如1000 | 1000Php Foreach数组爆炸量总计,php,arrays,Php,Arrays,这是我的数组,如果它们在一起,我需要添加所有数量,例如1000 | 1000 Array ( [0] => stdClass Object ( [student_no] => 8080808128 [amt] => 1000|1000 [main_receipt] => M_0000000001 )
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下面那么您的问题是什么?