PHP 에서 foreach 의 용법 과 인 스 턴 스 를 자세히 설명 합 니 다.

13742 단어 phpforeach
PHP 에 서 는 foreach 를 자주 사용 하고 foreach 를 사용 하려 면 배열 을 사용 해 야 합 니 다.그래서 이 글 에서 우 리 는 배열 을 이야기 하면 서 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
                (
                )

            )

        )

    )

)

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기