0

私の配列は次のようになります

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)
}
4

5 に答える 5

1
foreach($array as $key => &$value) {
    $value['FI_Ins_Amount'] *= 300;
}

コードパッド

于 2013-09-17T09:45:34.660 に答える
-1

installmentFixed 関数は固定値を返します。この例では、変数 $installmentFixed に 2 つの「固定」値を持つ配列を取得します。

配列内の値を修正するには、配列要素を foreach で反復処理する可能性があります。または書き込んでみてください(値渡しに注意してください)

function installmentFixed(&$value,$courseFee)
{
    $value["FI_Ins_Amount"] = $value["FI_Ins_Amount"]/100  * $courseFee;
}
于 2013-09-17T09:45:13.633 に答える
-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);

?>
于 2013-09-17T09:51:55.493 に答える
-1

コールバックに追加情報を渡したい場合は、キーワードを使用するか、コールバック関数に追加の値を渡すことuseができるキーワードを使用する方がよい場合があります。array_walk()

$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);
于 2013-09-17T09:42:16.197 に答える