에 영구적으로 업데이트되지 여기 코드는 다음과 같습니다배열이 일시적으로 업데이트하지만, PHP
if($condition == 'condition1' || $condition == 'condition2')
{
$found = false;
//loop through the array of customers contracts
foreach($cust_cont as $cust)
{
//if the customer is found
if ($cust["customer"] == $customer)
{
$temp = floatval($cust["hoursThisPer"]);
$temp += $time;
$cust["hoursThisPer"] = $temp;
$found = true;
}
}
if ($found == false)
{
$cust_cont[] = array("customer" => "$customer", "hoursUsed" => $hoursUsed,
"hoursAvail" => $allowed, "hoursThisPer" => (0 + $time));
}
}
그래서, 나는이 뭘 얻기 위해 노력하고있어 것은 배열을 통과합니다. 배열에 고객 번호가 인 경우 해당 고객의 사용 시간을 추가하고 싶습니다. 이 아닌이 고객의 항목 인 경우 해당 고객의 항목을 내 배열에 만들고 해당 값을 초기화하고 싶습니다.
배열의 항목이 제대로 초기화되고 있지만 업데이트하려고하면 펑키가 발생합니다. 예를 들어 배열에 customer1이 있고 customer1의 hoursThisPer에 추가하려는 경우 해당 위치에 추가하는 동작을 진행합니다. 그러나 다음에 업데이트해야 할 경우 customer1의 hoursThisPer는 업데이트 된 값과 반대되는 초기 값으로 설정됩니다. 나는 내 논리의 결함을 알아낼 수 없다. 도움말 크게 감사하겠습니다. 샘플 출력이 있습니다.
Customer1:0.25
time: 0.25
temp: 0.5
0.5
Customer1:0.25
time: 1.50
temp: 1.75
1.75
Customer1:0.25
time: 0.50
temp: 0.75
0.75
형식은 고객입니다 : 초기 시간; 추가 할 시간; 초기 시간 + 추가 시간의 예상 총계; 갱신 후의 배열의 값. 발견 된 고객의 다음 인스턴스 (그리고주기가 계속됨).
foreach의 배열을 변경하려면 'foreach ($ cust_cont as & $ cust)' – splash58
그건 작동합니다! 고마워요! 나는 솔직하게 말하지만, 나는 그것이 왜 효과가 있는지 모른다. 그게 무엇이고 왜 효과가 있었는지 내게 말할 수있는 방법이 있습니까? – dmcoding
@dmcoding 변수 앞의'&'기호는 참조로 전달합니다. 복사본으로'$ cust'보다 이것을 더하지 않으면 배열의 값에 대한 참조가 없습니다. –