PHP 에서 foreach 의 용법 과 인 스 턴 스 를 자세히 설명 합 니 다.
foreach 는 두 가지 문법 이 있 습 니 다.
첫 번 째:주어진 배열 문 구 를 옮 겨 다 니 며 arrayexpression 배열.순환 할 때마다 현재 단원 의 값 은$value 에 부여 되 고 배열 내부 의 지침 은 한 걸음 앞으로 이동 합 니 다(따라서 다음 순환 에 서 는 다음 단원 을 얻 을 수 있 습 니 다).
foreach (array_expression as $value)
두 번 째:같은 위 에 있 으 며,현재 단원 의 키 이름 도 매번 순환 할 때마다 변수$key 에 부 여 됩 니 다.
foreach (array_expression as $key => $value)
다음은 우리 가 한 번 설명 하 겠 습 니 다!1.1 차원 일반 배열 과 foreach
우 리 는 먼저 1 차원 배열 을 쓴다.다음 과 같다.
$a = array('Tom','Mary','Peter','Jack');
1.우 리 는 첫 번 째 foreach 방법 으로 출력 합 니 다.
foreach ($a as $value) {
echo $value."<br/>";
}
마지막 으로 얻 은 결 과 는:Tom
Mary
Peter
Jack
2.우 리 는 두 번 째 foreach 방법 으로 출력 합 니 다.
foreach ($a as $key => $value) {
echo $key.','.$value."<br/>";
}
마지막 으로 얻 은 결 과 는:0,Tom
1,Mary
2,Peter
3,Jack
결론:분명 합 니 다.우 리 는 단지$key 가 하나 더 생 겼 을 뿐 입 니 다.이$key 의 값 은 바로 번호 1,2,3,4 등 입 니 다!
2.1 차원 관련 배열 과 foreach
1 차원 관련 배열 은 다음 과 같다.
$b = array('a'=>'Tom','b'=>'Mary','c'=>'Peter','d'=>'Jack');
이렇게 쓰 기 를 좋아 하 는 사람 도 있다.다음 과 같다.
$b = array(
'a'=>'Tom',
'b'=>'Mary',
'c'=>'Peter',
'd'=>'Jack'
);
1.우 리 는 첫 번 째 foreach 방법 으로 위 와 같이 출력 합 니 다.
foreach ($b as $value) {
echo $value."<br/>";
}
마지막 으로 얻 은 결 과 는:Tom
Mary
Peter
Jack
2.우 리 는 두 번 째 foreach 방법 으로 출력 합 니 다.
foreach ($b as $key => $value) {
echo $key.','.$value."<br/>";
}
마지막 으로 얻 은 결 과 는:a,Tom
b,Mary
c,Peter
d,Jack
요약:1 차원 관련 배열 에서$key 는 관련 번호,즉 해당 하 는 a,b,c,d 임 이 분명 합 니 다.
3.2 차원 일반 배열 과 foreach
2 차원 배열 을 옮 겨 다 닐 때 좀 귀 찮 습 니 다.왜 죠?옮 겨 다 니 는 value 값 은 하나의 배열 이기 때문에 배열 이 라면 배열 에 대해 여러 가지 조작 을 할 수 있 습 니 다!
우 리 는 먼저 기본 적 인 2 차원 배열 을 보 았 다.다음 과 같다.
$c = array(
array('1','Tom'),
array('2','Mary'),
array('3','Peter'),
array('4','Jack')
);
1.우 리 는 첫 번 째 foreach 방법 을 사용한다.
foreach ($c as $value) {
print_r($value);
echo "<br/>";
}
이러한 결 과 를 얻다.Array ( [0] => 11 [1] => Tom )
Array ( [0] => 22 [1] => Mary )
Array ( [0] => 33 [1] => Peter )
Array ( [0] => 44 [1] => Jack )
2.우 리 는 두 번 째 foreach 방법 을 사용한다.
foreach ($c as $key => $value) {
echo '$key='.$key."<br/>";
print_r($value);
echo "<br/>";
}
다음 과 같은 결 과 를 얻 었 습 니 다.$key=0
Array ( [0] => 11 [1] => Tom )
$key=1
Array ( [0] => 22 [1] => Mary )
$key=2
Array ( [0] => 33 [1] => Peter )
$key=3
Array ( [0] => 44 [1] => Jack )
요약:위 에서 알 수 있 듯 이 기본 2 차원 배열,$key 는 바로 번호 입 니 다.예 를 들 어 0\1\\2\3 등!
4.관련 2 차원 배열 과 foreach
관련 2 차원 배열 이 실제 프로젝트 에서 많이 사용 되 었 다 는 뜻 이다.왜?일반 데이터베이스 에서 추출 한 데 이 터 는 모두 관련 2 차원 배열 입 니 다.관련 2 차원 배열 을 배 웠 습 니 다.바로 PHP 의 실전 에서 이미 많은 부분 을 파악 하 였 습 니 다!
그러면 먼저 관련 2 차원 배열 을 보 여 줍 니 다.다음 과 같 습 니 다.
$d = array(
array('id'=>'11','name'=>'Tom'),
array('id'=>'22','name'=>'Mary'),
array('id'=>'33','name'=>'Peter'),
array('id'=>'44','name'=>'Jack')
);
1.첫 번 째 방법 으로 코드:
foreach ($d as $value) {
print_r($value);
echo "<br/>";
}
얻 은 결 과 는 다음 과 같다.Array ( [id] => 11 [name] => Tom )
Array ( [id] => 22 [name] => Mary )
Array ( [id] => 33 [name] => Peter )
Array ( [id] => 44 [name] => Jack )
분명 한 것 은 관련 과 관련 이 없 는 차이 점 은 관련 이 없 는 앞 은 0/1 등 이 고 관련 은 구체 적 인 이름 id/name 등 을 나타 낸다 는 것 이다.
2.두 번 째 방법 으로 코드:
foreach ($d as $key => $value) {
echo '$key='.$key."<br/>";
print_r($value);
echo "<br/>";
}
얻 은 결 과 는 다음 과 같다.$key=0
Array ( [id] => 11 [name] => Tom )
$key=1
Array ( [id] => 22 [name] => Mary )
$key=2
Array ( [id] => 33 [name] => Peter )
$key=3
Array ( [id] => 44 [name] => Jack )
결론:여기$key 는 여전히 0/1/2/3 입 니 다.
5.프로젝트 중 실전 응용
설명:프로젝트 에서 배열 의 변화 가 매우 많 습 니 다.물론 foreach 공 은 없어 서 는 안 됩 니 다!물론 while,each 등 방법 도 사용 할 수 있 지만 foreach 가 가장 편리 합 니 다!다음은 몇 가지 흔히 볼 수 있 는 프로젝트 실전 을 간략하게 말씀 드 리 겠 습 니 다!
실전 1:2 차원 관련 배열 을 1 차원 일반 배열 로 바 꿉 니 다.
아니면 네 번 째 로 관련 2 차원 배열 을 보 여 줍 니까?다음 과 같 습 니 다.
$d = array(
array('id'=>'11','name'=>'Tom'),
array('id'=>'22','name'=>'Mary'),
array('id'=>'33','name'=>'Peter'),
array('id'=>'44','name'=>'Jack')
);
지금 우 리 는 name 1 열의 내용 만 있 으 면 다음 과 같은 방법 으로 실현 할 수 있 습 니 다.
foreach ($d as $key => $value) {
echo ($value['name']);
echo "<br/>";
}
그러나 가끔 우 리 는 이 를 1 차원 배열 로 분류 해 야 하기 때문에 우 리 는 다음 과 같은 방법 이 있다.
// name
$nameArr = array(); //name
foreach ($d as $key => $value) {
$nameArr[] = $value['name'];
}
print_r($nameArr);
위 에서 빈 배열 값 을 부여 함으로써 foreach 라 는 빈 배열 은 우리 의 값 과 같 습 니 다.새로운 배열 을 얻 었 습 니 다!이상 코드 의 결 과 는 다음 과 같 습 니 다.
Array
(
[0] => Tom
[1] => Mary
[2] => Peter
[3] => Jack
)
이 배열 은 1 차원 일반 배열 로 다음 과 같다.
$d = array('Tom','Mary','Peter','Jack');
자,2 차원 관련 배열 을 1 차원 일반 배열 로 바 꾸 면 여기까지 쓰 겠 습 니 다!실전 2:2 레벨 분류 및 무한 레벨 분류
분명히 우리 가 데이터베이스 에서 꺼 낸 데 이 터 는 2 차원 배열 이 고 2 차원 관련 배열 이다.그럼,우 리 는 어떻게 아버지의 분 류 를 꺼 냅 니까?어떻게 부모 분류 에 대응 하 는 하위 분 류 를 꺼 냅 니까?
먼저 설명 하고 자 하 는 것 은 거의 모든 분 류 는 하나의 데이터 베이스 모델 이기 때문에 우 리 는 그의 구 조 를 이해 하고 해당 하 는 데 이 터 를 어떻게 꺼 내 는 지 알 필요 가 있다.
2 급 분류 에 대해 설명 이 편리 하기 위해 저 는 인터넷 에서 비교적 설명 하기 좋 은 예 를 찾 았 습 니 다.그것 이 바로'뉴스 분류'입 니 다!
자,잔말 말고 본론 으로 들 어가 자!우 리 는 먼저 배열 을 하나 쓴다.
//
$original_array = array(
array('id' => 1,'pid' => 0,'name' => ' '),
array('id' => 2,'pid' => 0,'name' => ' '),
array('id' => 3,'pid' => 1,'name' => ' '),
array('id' => 4,'pid' => 1,'name' => ' '),
array('id' => 5,'pid' => 0,'name' => ' '),
array('id' => 6,'pid' => 5,'name' => ' '),
array('id' => 7,'pid' => 5,'name' => ' ')
);
동시에 데이터 베 이 스 는 이 모양 이다.
설명:데이터베이스 의 분 류 는 바로 이 모양 입 니 다!꺼 낸 배열 도 이 렇 습 니 다!보통 이런 거!
//
$original_array = array(
array(
'id' => 1,
'pid' => 0,
'name' => ' '
),
array(
'id' => 2,
'pid' => 0,
'name' => ' '
),
array(
'id' => 3,
'pid' => 1,
'name' => ' '
),
array(
'id' => 4,
'pid' => 1,
'name' => ' '
),
array(
'id' => 5,
'pid' => 0,
'name' => ' '
),
array(
'id' => 6,
'pid' => 5,
'name' => ' '
),
array(
'id' => 7,
'pid' => 5,
'name' => ' '
)
);
그러면 일단 저희 가 원 하 는 결과 가 어떤 지 알 아야 돼 요?이 점:우 리 는 알 아야 한다!(예전 에 저 는 이 방면 에 대해 잘 알 지 못 했 고 오픈 소스 프로그램 도 자주 사용 하기 때문에 이런 부분 을 잘 쓰 지 못 했 습 니 다)우리 가 결국 원 하 는 결 과 는 이렇다!모두 가 농담 하 는 것 이 두 렵 지 않다.이 점 은 내 가 친구 에 게 도움 을 청해 서 해결 한 것 이다!)
//
$output_array = array(
array(
'id' => 1,
'pid' => 0,
'name' => ' ',
'children' => array(
array(
'id' => 3,
'pid' => 1,
'name' => ' '
),
array(
'id' => 4,
'pid' => 1,
'name' => ' '
),
),
),
array(
'id' => 2,
'pid' => 0,
'name' => ' ',
),
array(
'id' => 5,
'pid' => 0,
'name' => ' ',
'children' => array(
array(
'id' => 6,
'pid' => 5,
'name' => ' '
),
array(
'id' => 7,
'pid' => 5,
'name' => ' '
),
),
),
);
여기 배열 에 필드 가 하나 더 생 긴 것 이 분명 합 니 다.바로 children 입 니 다!그럼 어떻게$originalarray 가$outputarray 는 요?여기 제 친구 가 만 든 함수 가 있 습 니 다.물론 foreach 도 사용 합 니 다!
함 수 는 다음 과 같다.
//
/**
*
* @author Baiyu 2014-04-01
* @param array $arr
* @param number $pid pid
* @param string $column_name ,id|pid id |children
* @return array $ret
*/
function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') {
list($idname, $pidname, $cldname) = explode('|', $column_name);
$ret = array();
foreach ($arr as $k => $v) {
if ($v [$pidname] == $pid) {
$tmp = $arr [$k];
unset($arr [$k]);
$tmp [$cldname] = make_tree($arr, $v [$idname], $column_name);
$ret [] = $tmp;
}
}
return $ret;
}
그럼 어떻게 쓰 지?
//
$output_array = make_tree($original_array);
전체 사용 방법 은 다음 과 같다.
$output_array =make_tree($arr, 0, 'id|pid|children')
함수 후에 우 리 는 이렇게 호출 하면 1 급 분류 와 2 급 분 류 를 얻 을 수 있 습 니 다!
foreach ($output_array as $key => $value) {
echo '<h2>'.$value['name'].'</h2>';
foreach ($value['children'] as $key => $value) {
echo $value['name'].',';
}
결 과 는 다음 과 같다.
첨부:$outputarray 이 배열,우 리 는 print 를 사용 합 니 다.r,다음 과 같은 결 과 를 얻 을 수 있 습 니 다!
Array
(
[0] => Array
(
[id] => 1
[pid] => 0
[name] =>
[children] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] =>
[children] => Array
(
)
)
[1] => Array
(
[id] => 4
[pid] => 1
[name] =>
[children] => Array
(
)
)
)
)
[1] => Array
(
[id] => 2
[pid] => 0
[name] =>
[children] => Array
(
)
)
[2] => Array
(
[id] => 5
[pid] => 0
[name] =>
[children] => Array
(
[0] => Array
(
[id] => 6
[pid] => 5
[name] =>
[children] => Array
(
)
)
[1] => Array
(
[id] => 7
[pid] => 5
[name] =>
[children] => Array
(
)
)
)
)
)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.