我的数组看起来像这样
array(2) {
[0]=>
array(5) {
["FI_ID"]=>
string(3) "577"
["FI_Stru_Code"]=>
string(13) "MCTS-70-631/1"
["FI_Ins_NO"]=>
string(1) "1"
["FI_Type"]=>
string(10) "Percentage"
["FI_Ins_Amount"]=>
string(5) "60.00"
}
[1]=>
array(5) {
["FI_ID"]=>
string(3) "578"
["FI_Stru_Code"]=>
string(13) "MCTS-70-631/1"
["FI_Ins_NO"]=>
string(1) "2"
["FI_Type"]=>
string(10) "Percentage"
["FI_Ins_Amount"]=>
string(5) "40.00"
}
}
我想这样做
array(2) {
[0]=>
array(5) {
["FI_ID"]=>
string(3) "577"
["FI_Stru_Code"]=>
string(13) "MCTS-70-631/1"
["FI_Ins_NO"]=>
string(1) "1"
["FI_Type"]=>
string(10) "Percentage"
["FI_Ins_Amount"]=>
string(5) "18000.00" // 30000*60% (I want to apply this to every FI_Ins_Amount)
}
[1]=>
array(5) {
["FI_ID"]=>
string(3) "578"
["FI_Stru_Code"]=>
string(13) "MCTS-70-631/1"
["FI_Ins_NO"]=>
string(1) "2"
["FI_Type"]=>
string(10) "Percentage"
["FI_Ins_Amount"]=>
string(5) "12300.00" // 30000*40%
}
}
我尝试使用以下功能
$courseFee = 30000;
function installmentFixed($value,$courseFee)
{
return $value["FI_Ins_Amount"]/100 * $courseFee;
}
$installmentFixed = array_map("installmentFixed", $installment);
var_dump($installmentFixed);
但它似乎无法正常工作。为什么?
返回
array(2) {
[0]=>
float(0)
[1]=>
float(0)
}
答案 0 :(得分:1)
foreach($array as $key => &$value) {
$value['FI_Ins_Amount'] *= 300;
}
<强> Codepad 强>
答案 1 :(得分:0)
这就是我想要的
$courseFee = 30000;
$installmentFixed = array_map(function($value) use ($courseFee)
{
return array("FI_Ins_NO" => $value["FI_Ins_NO"], "FI_Ins_Amount" => number_format($value["FI_Ins_Amount"]/100 * $courseFee, 2, '.00', ''));
}, $installment);
答案 2 :(得分:-1)
如果您想将其他信息传递给回调,则需要使用use
关键字,或者您最好使用array_walk()
,这样可以将其他值传递给回调功能< / p>
$courseFee = 30000; //
function installmentFixed(&$value, $key, $courseFee) {
$value["FI_Ins_Amount"] = $value["FI_Ins_Amount"] / 100 * $courseFee;
}
array_walk($instalment, "installmentFixed", $courseFee);
var_dump($instalment);
请注意,array_walk接受通过引用传递的数组,因此它直接更新原始数组
如果你想使用array_map,那么你最好使用一个闭包,这样你就可以用use
传递附加参数
$courseFee = 30000; //
$installmentFixed = array_map(
function ($value) use ($courseFee) {
$value["FI_Ins_Amount"] =
$value["FI_Ins_Amount"] / 100 * $courseFee;
return $value;
},
$instalment
);
var_dump($installmentFixed);
答案 3 :(得分:-1)
你的installmentFixed函数返回固定值;在这个例子中,你将获得一个在变量$ installmentFixed。
中有两个“固定”值的数组要修复数组中的值,您可以使用foreach迭代数组元素;或尝试写(注意值的传递)
function installmentFixed(&$value,$courseFee)
{
$value["FI_Ins_Amount"] = $value["FI_Ins_Amount"]/100 * $courseFee;
}
答案 4 :(得分:-1)
<?php
$array = array (
0=> array (
"FI_ID"=> "577",
"FI_Stru_Code"=> "MCTS-70-631/1",
"FI_Ins_NO"=> "1",
"FI_Type"=> "Percentage",
"FI_Ins_Amount"=> "60.00"
),
1=>array (
"FI_ID"=> "578",
"FI_Stru_Code"=> "MCTS-70-631/1",
"FI_Ins_NO"=> "2",
"FI_Type"=> "Percentage",
"FI_Ins_Amount"=> "40.00"
)
);
$courseFee = 30000; //
foreach($array as $key => $value) {
$value['FI_Ins_Amount'] = ($value['FI_Ins_Amount']/100) * $courseFee;
$array[$key] = $value; //Without This line some php versions will not show modified value.
}
var_dump($array);
?>