PHP
1 $setPositionPercentage =['upper'=>21, 'middle'=>67, 'low'=>14]; 2 3 if(array_sum($setPositionPercentage) > 100){ 4 foreach($setPositionPercentage as $key => $val){ 5 for ($i=100; $i<array_sum($setPositionPercentage); $i++){ 6 $setPositionPercentage[$key] += -1; 7 } 8 } 9 } 10 var_dump($setPositionPercentage); 11 /* 12 array:3 [▼ 13 "upper" => 20.0 14 "middle" => 66.0 15 "low" => 14.0 16 ] 17 */
上記のvardumpの結果から、何故 "upper","middle"のkeyに対して、-1されているのでしょうか?
上記のループ、foreachの入れ子のロジックでは、upperのkeyの値に対してのみ-1ずつされていき、100になったらループを抜けると解釈していたため、何故forのループ中に、$keyが"upper"から"middle"になるのかわかりません。
返り値として、下記を想定していました。
/*
array:3 [▼
"upper" => 19.0
"middle" => 67.0
"low" => 14.0
]
*/
途中echoなどで値を追ってデバッグしてみては?
回答2件
あなたの回答
tips
プレビュー