&$value){//Loop body 문 블록;}"."/> &$value){//Loop body 문 블록;}".">

>백엔드 개발 >PHP 문제 >foreach 루프에서 PHP의 원본 배열을 수정하는 방법

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

青灯夜游
青灯夜游원래의
2022-09-28 17:18:083297검색

PHP에서는 참조 루프를 사용하기 위해 foreach 문만 필요합니다. 그런 다음 루프 본문의 원래 배열을 작동(수정)하면 "foreach ($array as &$value)" 구문이 원래 배열 자체에 영향을 미칩니다. / 루프 본문 문 블록;}" 또는 "foreach ($array as $key => &$value){//루프 본문 문 블록;}".

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, DELL G3 컴퓨터

foreach는 배열을 순회하기 위해 특별히 설계된 명령문으로, 배열을 순회할 때 일반적으로 사용되는 방법입니다. 배열 탐색에 도움이 됩니다. PHP5 이후에는 객체 탐색도 가능합니다(foreach는 배열과 객체에만 적용할 수 있습니다).

foreach 문은 배열 첨자에 관계없이 배열을 순회하며 불연속 인덱스 배열 및 문자열을 첨자로 사용하는 연관 배열에 사용할 수 있습니다.

foreach 문에는 두 가지 구문 형식이 있습니다.

문법 형식 1:

foreach ($array as $value){
    //循环体语句块;
}
  • 주어진 $array 배열을 탐색하고 현재 배열의 값을 각 루프의 $value에 할당합니다.

구문 형식 2:

foreach ($array as $key => $value){
    //循环体语句块;
}
  • 주어진 $array 배열을 탐색합니다. 각 루프에서 현재 배열의 값은 $value에 할당되고 키 이름은 $key에 할당됩니다.

설명:

각 명령문에 대해 배열 내부의 포인터는 한 단계 앞으로 이동하므로 배열의 끝을 탐색할 때까지 다음 루프에서 다음 배열 요소를 가져오고 탐색이 중지되며 루프가 종료됩니다.

foreach 루프에서 원래 배열 수정

일반적으로 foreach 문을 사용하여 배열을 순회하는 경우 배열의 백업에서 작동하며 일반적으로 배열 자체에는 영향을 미치지 않습니다.

예: 루프 내부의 배열을 수정한 다음 루프 외부의 배열에 액세스하면 배열이 변경되지 않은 것을 확인할 수 있습니다

<?php
header("Content-type:text/html;charset=utf-8");
$array= array(1,2,3,4,5,);
echo "原数组:";
var_dump($array);
foreach ($array as $value) { 
    $value = $value*2;  // 元素值乘以2
}
echo "foreach处理后的数组:";
var_dump($array);
?>

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

두 출력이 동일하다는 것을 알 수 있으며, 배열 요소는 현재로서는 foreach 루프에서 변경되지 않았습니다. 원래 배열에 대한 수정 사항은 유효하지 않습니다.

하지만 때로는 foreach 루프를 통해 배열을 변경해야 하는 경우가 있는데 어떻게 해야 할까요?

참조 루프를 사용할 수 있습니다. 즉, $value 앞에 &를 추가하면 foreach 문이 값을 복사하는 대신 참조로 값을 할당하게 됩니다. , 루프 본문에서 원래 배열에 대한 작업은 원래 배열 자체에 영향을 미칩니다. $value 之前加上 &,这样foreach语句会以引用赋值而不是拷贝一个值),那么在循环体内对原数组进行操作,就会影响原数组本身。

<?php
header("Content-type:text/html;charset=utf-8");
$array= array(1,2,3,4,5,);
echo "原数组:";
var_dump($array);
foreach ($array as &$value) { 
    $value = $value*2;  // 元素值乘以2
}
echo "foreach处理后的数组:";
var_dump($array);
?>

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

可以看出:数组元素发生了变化,元素值都乘以了2。

但最后一个元素前,多了一个&,这又是怎么了?怎么去除?

这因为数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。我们需要在输出数组前,使用unset() 来将其销毁。

unset($value); // 最后取消掉引用
var_dump($array)

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

&rrreee

foreach 루프에서 PHP의 원본 배열을 수정하는 방법

배열 요소가 변경되어 요소 값이 2배가 된 것을 확인할 수 있습니다.

하지만 마지막 요소 앞에 추가 &가 있습니다. 이게 무슨 문제인가요? 그것을 제거하는 방법? 🎜🎜이는 배열의 마지막 요소에 대한 $value 참조가 foreach 루프 뒤에 남아 있기 때문입니다. 배열을 출력하기 전에 배열을 파괴하려면 unset()을 사용해야 합니다. 🎜rrreee🎜foreach 루프에서 PHP의 원본 배열을 수정하는 방법🎜🎜 & 문자가 사라졌습니다! 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜

위 내용은 foreach 루프에서 PHP의 원본 배열을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.