워드프레스 함수들(특히 $wpdb 클래스에서. 'get_results()' 메서드 등), 그리고 반환 배열이 하나의 요소만 있지만 연관 배열이라면, 중첩된 루프를 사용해 값을 불러오는 경우가 꽤 많습니다. 오랫동안 코드 중복되고 비효율적이었지만... 이번에는 개선할 방법을 찾아서 여기에 TIPS로 남겨두려고 합니다.
$array = 배열(
array(
'key_1' => 'value_1',
'key_2' => 'value_2',
),
);
foreach ($array $nested_array) {
foreach ($nested_array as $key => $value) {
에코 '배열[". $key. '"] => "' . $value. '"<br />';
}
}
지금까지는 연관 배열을 중첩해서 foreach 루프를 중첩해서 값을 얻곤 했는데(쓸모없진 않지만 효율적이지는 않습니다) 그래서 이 연관 배열과 루프의 중첩을 해결해 간단한 프로세스를 작성할 수 있을지 궁금합니다... 여러 PHP 배열 함수를 시도해봤습니다. 'array_reduce()'나 'array_walk()' 같은 잘 사용하지 않는 함수를 사용할 수 있고, 직접 함수를 조립해 중첩을 해결할 수도 있지만, 직접 함수를 준비해야 해서 그건 현명하지 않습니다... 한 줄로 해결할 수 있는지 시행착오를 시도해봤는데, 해결할 수 있었습니다! 선두 요소를 'array_shift()'로 가져와서 원래 배열 변수를 덮어쓸 수 있습니다.
$array = array_shift($array);
하지만 만약 이게 전부라면, 배열의 하나 이상도 덮어쓰기 되므로, 저는 요소 수에 대한 판단을 넣겠습니다.
$array = (count($array) == 1) ? array_shift($array) : $array;
이 코드를 사용해 첫 번째 코드를 다시 작성했을 때,
$array = 배열(
array(
'key_1' => 'value_1',
'key_2' => 'value_2',
),
);
$array = (count($array) == 1) ? array_shift($array) : $array;
foreach ($array $key => $value) {
에코 '배열[". $key. '"] => "' . $value. '"<br />';
}
음, 정말 상쾌했어요. 제 모야모야도 맑아졌어요.