PHP의 foreach 문은 배열이나 객체의 요소를 반복(iterate)하면서 각 요소에 쉽게 접근할 수 있도록 도와주는 루프입니다. 일반적으로 배열이나 객체를 처리할 때 많이 사용되며, 코드가 간결하고 가독성이 좋아지는 장점이 있습니다.
기본 문법
foreach는 두 가지 주요 형식으로 사용할 수 있습니다.
1. 값만 반복
배열의 각 값을 반복하여 처리할 때 사용합니다.
foreach ($array as $value) {
// $value는 배열의 현재 요소
}
2. 키와 값 반복
배열의 키와 값을 함께 사용할 때 유용합니다.
foreach ($array as $key => $value) {
// $key는 현재 요소의 키
// $value는 현재 요소의 값
}
활용 예제
1. 배열의 값만 출력하기
<?php
$fruits = ["Apple", "Banana", "Cherry"];
foreach ($fruits as $fruit) {
echo $fruit . "<br>";
}
?>
결과:
Apple
Banana
Cherry
2. 배열의 키와 값 출력하기
<?php
$person = [
"name" => "John Doe",
"age" => 30,
"email" => "john.doe@example.com"
];
foreach ($person as $key => $value) {
echo ucfirst($key) . ": " . $value . "<br>";
}
?>
결과:
Name: John Doe
Age: 30
Email: john.doe@example.com
3. 다차원 배열 순회
<?php
$products = [
["name" => "Laptop", "price" => 1000],
["name" => "Phone", "price" => 700],
["name" => "Tablet", "price" => 400],
];
foreach ($products as $product) {
echo "Product: " . $product["name"] . ", Price: $" . $product["price"] . "<br>";
}
?>
결과:
Product: Laptop, Price: $1000
Product: Phone, Price: $700
Product: Tablet, Price: $400
4. 객체를 foreach로 순회
<?php
class User {
public $name;
public $email;
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
}
$user = new User("Jane Doe", "jane.doe@example.com");
foreach ($user as $key => $value) {
echo ucfirst($key) . ": " . $value . "<br>";
}
?>
결과:
Name: Jane Doe
Email: jane.doe@example.com
5. 배열 요소 수정
&를 사용하여 배열 요소를 직접 수정할 수도 있습니다.
<?php
$numbers = [1, 2, 3, 4, 5];
foreach ($numbers as &$number) {
$number *= 2; // 요소를 두 배로
}
unset($number); // 참조 초기화 (다른 코드에서 문제 방지)
print_r($numbers);
?>
결과:
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
주의 사항
1. unset() 사용 권장
참조로 배열 요소를 수정한 경우, 루프가 끝난 후 반드시 참조를 초기화해야 합니다. 이를 위해 unset($variable)을 사용합니다.
2. foreach로 키를 수정할 수 없음
foreach는 배열의 키를 변경할 수 없습니다. 키를 수정하려면 array_map()이나 array_walk()와 같은 함수를 사용해야 합니다.
PHP의 foreach는 배열과 객체를 처리할 때 강력하고 간결한 도구입니다. 위 예제들을 실습해 보면 foreach의 유용함과 다양한 활용 방식을 이해할 수 있습니다.
With ChatGPT
'PHP > 포스팅' 카테고리의 다른 글
[PHP] goto 제어문 (0) | 2024.11.29 |
---|---|
[PHP] match 제어문 (0) | 2024.11.28 |
[PHP] do-while 반복문 (0) | 2024.06.02 |
[PHP] while 반복문 (0) | 2024.06.02 |
[PHP] for 반복문 (0) | 2024.06.02 |