이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 2908|회답: 0

신입 게시글, PHP가 배열을 탐색하는 6가지 방법을 요약했습니다

[링크 복사]
게시됨 2022. 6. 8. 오후 3:56:10 | | |


PHP의 일상 운영에서 배열이 가장 일반적인 구조이며, 우리는 거의 매일 배열 관련 콘텐츠를 다룹니다. 그래서 질문은, 배열을 일반적으로 어떻게 횡단하고 처리하느냐는 것입니다.


1, foreach
익숙하지, 네가 가장 좋아하는 거 아니야?
$arr = ['a', 'b', 'c'];
foreach ($arr $key => $value) {
    $arr[$key] = $value. '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


2, array_map
배열의 각 요소를 익명 함수로 처리하세요. 이동이 완료되면 새로운 배열이 반환됩니다
$arr = ['a', 'b', 'c'];
$arr = array_map(function ($item) {
    $item 반환. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
여러 배열을 동시에 다룰 수 있습니다
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['너', '선', '이것', '원래', '죄'];
$arr_n = [...];
$arr = array_map(function ($item_1, $item_2) {
    $item_1 . '_' . $item_2. '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ _i', 'b_ good_i', 'c__i 있니?', '_original _i', '_sin_i']
네, 이동 횟수는 가장 긴 배열을 기준으로 합니다.
3번 이동하면 $arr_1이 실제로 완료되므로, 그 이후로 $item_1의 값은 영이 됩니다


3, array_walk
참조 패스로서 배열을 탐색하면 반환 값이 없고 하나의 배열만 처리할 수 있습니다.
$arr = ['a', 'b', 'c'];
array_walk($arr, 함수 (&$item) {
    $item = $item. '_i';
});


print_r($arr); ['a_i', 'b_i', 'c_i'];
참고$item, 네, 추가 &가 있는데, 이는 매개변수가 참조를 통해 데이터를 받고 있다는 뜻입니다. 이 매개변수를 바꾸는 방법만 찾으면 됩니다.


2차원 배열을 다룰 때는 처리 방식도 분리할 수 없습니다.
$arr = [
    ['이름' => 'a'],
    ['이름' => 'b'],
    ['이름' => 'c']
];
array_walk($arr, 함수 (&$item) {
    $item['이름'] = $item['이름'] . '_i';
});
print_r($arr); [['이름' => 'a_i'], ['이름' => 'b_i'], ['이름' => 'c_i']]];


4, 에
이것은 매우 일반적인 문법이어야 합니다
$arr = ['a', 'b', 'c'];
($i = 0)에 대해; $i < 카운트($arr); ++$i) {
    $arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
추천하지 않습니다. 포리치만큼 효율적이지는 않습니다. 그리고 글쓰기 방식은 포레지션보다 약간 더 번거롭습니다.


5, 각각
하하, 이 기능은 PHP7.2 @deprecated에 폐지되었고 특히 구식인 느낌입니다. 이 작성법의 실행 효율성도 좋지 않아 초보자는 바로 포기하는 것이 좋습니다.
$arr = ['a', 'b', 'c'];
while (list($key, $value) = each($arr)) {
    $arr[$key] = $value. '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];


6, 리셋
정확히 말하면, 단순히 리셋하는 함수가 아니라 여러 내장 함수의 조합으로, 기본적으로 코드를 작성할 때 사용되지 않습니다
$arr = ['a', 'b', 'c'];
reset() 포인터를 머리로 가리키는 것이고, 사실 기본값은 처음을 가리키는 것이니 이 문장은 무시해도 됩니다
reset($arr);
current()를 사용하여 현재 포인터의 요소 값을 얻습니다
반면 ($value = current($arr)) {
    key()를 사용하여 현재 포인터의 원소 첨자를 얻습니다
    $arr[key($arr)] = $value. '_i';
    next() 포인터를 다음 것으로 연결해
    다음($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];





이전의:[실전 전투] 코어 ASP.NET 이미지 NUGET 타임아웃 이슈로 패키징하기
다음:Kindeditor 편집기 대량 업로드 이미지 확장 프로그램 (플래시 의존성 없음)
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com