私は最近、配列の値をphpの配列の配列にマージすることについて質問し、正しい答えを得ました。どのように問題が発生したか、配置したvarダンプまたはエコーに関係なく理解できないものです。
同じ配列の例と、私がそうする場合に提供される解決策を使用します。
$result = array();
if(is_array($ticketLabors) && !empty($ticketLabors)){
foreach ($ticketLabors as $innerArray) {
foreach ($innerArray as $key=>$value) {
$result[$key] = number_format($result[$key] + $value, 2);
}
}
}
var_dump($result);
次のような配列で:
array(2) {
[0]=>
array(10) {
["ticket_labor_ot_travel_c"]=>
string(5) "34.50"
["ticket_labor_travel_c"]=>
string(5) "23.00"
["ticket_labor_ot_c"]=>
string(5) "34.50"
["ticket_labor_reg_c"]=>
string(5) "23.00"
["ticket_labor_user_id"]=>
string(3) "319"
["ticket_labor_tot_hours"]=>
string(4) "0.50"
["ticket_labor_reg_hours"]=>
string(4) "0.50"
["ticket_labor_ot_hours"]=>
string(4) "0.00"
["ticket_labor_travel_hours"]=>
string(4) "0.00"
["ticket_labor_ot_travel_hours"]=>
string(4) "0.00"
}
[1]=>
array(10) {
["ticket_labor_ot_travel_c"]=>
string(4) "0.00"
["ticket_labor_travel_c"]=>
string(4) "0.00"
["ticket_labor_ot_c"]=>
string(4) "0.00"
["ticket_labor_reg_c"]=>
string(4) "0.00"
["ticket_labor_user_id"]=>
string(1) "0"
["ticket_labor_tot_hours"]=>
string(4) "0.00"
["ticket_labor_reg_hours"]=>
string(4) "0.00"
["ticket_labor_ot_hours"]=>
string(4) "0.00"
["ticket_labor_travel_hours"]=>
string(4) "0.00"
["ticket_labor_ot_travel_hours"]=>
string(4) "0.00"
}
}
(前の質問と同じように、上記の配列には 70 個の配列が含まれている可能性があることに注意してください)
私は次のようなものを返します:
array(10) {
["ticket_labor_ot_travel_c"]=>
string(5) "0.00"
["ticket_labor_travel_c"]=>
string(5) "0.00"
["ticket_labor_ot_c"]=>
string(5) "0.00"
["ticket_labor_reg_c"]=>
string(5) "0.00"
["ticket_labor_user_id"]=>
string(5) "0.00"
["ticket_labor_tot_hours"]=>
string(4) "0.00"
["ticket_labor_reg_hours"]=>
string(4) "0.00"
["ticket_labor_ot_hours"]=>
string(4) "0.00"
["ticket_labor_travel_hours"]=>
string(4) "0.00"
["ticket_labor_ot_travel_hours"]=>
string(4) "0.00"
}
前の配列の配列のすべての配列が圧縮され、それら$key=>$value
の が一緒に追加された 1 つの配列。
問題は何ですか?私がどこにいてvar_dump
も、echo
$key
$value
$innerArray
私は最終的に次のような通知を大量に受け取ります。
注意: 未定義のインデックス: C:\xampp\htdocs\rms\site\web\module\Report\controller\Index.controller.phpの146 行目の ticket_labor_ot_travel_hours
各通知は、のキーごとに異なります$innerArray
。if(isset($key) && isset($value)){ ... }
だから私はいいえ、同じ問題をやろうと思った。
私は外側の配列をチェックし、入ってくるものが私が望むものであり、すべてのキーが設定されていることを保証できます.
146行目が何であるか疑問に思っている場合:$result[$key] = number_format($result[$key] + $value, 2);
何か助けはありますか?