참조로 전달하여 직접 배열의 값을 변경 (값을 대문자로 변환)하는 코드 스 니펫을 고려하십시오.임시 변수가 배열 요소를 변경하는 데 왜 필요하며 왜 결국 끝내야합니까?
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = strtoupper($color);
}
unset($color); /* ensure that following writes to
$color will not modify the last array element */
print_r($colors);
?>
출력 :
Array
(
[0] => RED
[1] => BLUE
[2] => GREEN
[3] => YELLOW
)
나는 모든 위의 코드를 이해하지했습니다. 다음과 같이 내가 위의 코드에 대한 몇 가지 의문을했습니다 :
- 가 나는
foreach
루프 내부에서 모든$color = strtoupper($color);
에서이 문장을 이해하지 못했다. 임시 변수$color
이 사용되는 이유는strtoupper()
참조&$color
이 전달되지 않고$color
만 전달되는 이유는 무엇입니까? - 왜
$color
변수가 설정 해제 되었습니까? 설정을 취소하기 전에 그 안에 무엇이 들어 있었습니까? - 주석 의 의미가 배열의 마지막 요소로서 "다음은 마지막 배열 요소를 수정하지 않습니다 $ 색상에 기록되도록"즉 노란색도 무엇을 수정지고있어? 한마디로
는 단계 단계별 방식으로 foreach
루프의 코드에 거기에 무슨 일이 일어나고 있는지 설명해주십시오.
누군가 내 대답에 답하십시오.
참고 : 위의 코드 예제는 PHP Manual의 Array 장에서 가져 왔습니다.
제거 /를'unset' 전화 주석의'$의 color' 변수에 쓰기 추가 마지막에'print_r' 호출 이전에) 꽤 빨리 얻을 수 있습니다. – Calimero
요점은 unset()을 주석 처리/제거하여 실제 발생하는 마법을 확인하는 것입니다. 답변 올거야. – Calimero
부수적으로, array_map을 사용할 수 있도록하기 위해서 : $ colors = array_map ("strtoupper", $ colors); –