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'];
|