array_splice
array array_splice ( array
&$input
, int $offset
[, int $length = count($input)
[, mixed $replacement = array()
]] ) 當參數 3 為 0 時, 表示不置換原陣列中的任一元素, 而是在參數 2 指定的位置後插入新元素。
// 原陣列
$rs = array(array("name" => "johnber", "money" => 100),
array("name" => "ann", "money" => 10),
array("name" => "catherine", "money" => 50),
array("name" => "andrew", "money" => 300)
);
print_r($rs);
echo '<br /><br />';
$nowpos = 1;
$submoney = 0;
$totalmoney = 0;
foreach($rs as $key => $val)
{
$submoney += $val['money'];
$totalmoney += $val['money'];
if($val['name']=='ann')
{ // 當遇到 name= ann 的陣列元素時, 插入新的陣列元素
$insert = array(array("name" => "subtotal", "money" => $submoney));
array_splice($rs, $nowpos, 0, $insert);
$submoney = 0;
}
$nowpos++;
}
array_push($rs, array("name" => "total", "money" => $totalmoney));
print_r($rs);
echo '<br /><br />';
echo 'submoney = '.$submoney.'<br /><br />';
echo 'totalmoney = '.$totalmoney.'<br /><br />';