PHP에서 알려진 키를 가진 배열 요소를 배열 끝으로 이동하려면 어떻게 해야 합니까?
아주 사소한 문제로 뇌가 얼어붙는 것.다음과 같은 배열로 시작하면 다음과 같습니다.
$my_array = array(
'monkey' => array(...),
'giraffe' => array(...),
'lion' => array(...)
);
...다른 키를 사용하여 새 요소를 추가할 수 있지만 항상 배열 값을 사용할 수 있습니다.이제 첫 번째 요소에 항상 'monkey' 키가 있을 것이라고 확신할 수 있지만 다른 키는 확신할 수 없습니다.
배열 채우기를 마치면 다른 요소의 순서를 방해하지 않고 알려진 요소 'monkey'를 배열 끝으로 이동합니다.이것을 하는 가장 효율적인 방법은 무엇입니까?
제가 생각할 수 있는 모든 방법은 약간 투박해 보이고 저는 명백한 것을 놓치고 있는 것처럼 느껴집니다.
이 작업을 수행할 수 있는 유일한 방법은 제거한 다음 추가하는 것입니다.
$v = $my_array['monkey'];
unset($my_array['monkey']);
$my_array['monkey'] = $v;
array_shift는 인덱스 설정을 해제하는 것보다 효율성이 낮지만 다음과 같이 작동합니다.
$my_array = array('monkey' => 1, 'giraffe' => 2, 'lion' => 3);
$my_array['monkey'] = array_shift($my_array);
print_r($my_array);
또 다른 대안은 콜백 및 uksort입니다.
uksort($my_array, create_function('$x,$y','return ($y === "monkey") ? -1 : 1;'));
PHP 5.3+를 사용하거나 정기적으로 함수를 전역 함수로 정의하는 경우 적절한 람다를 사용할 수 있습니다.
저는 원 라이너로서의 우아함에 대한 @Gordon의 답변을 정말 좋아하지만, 대상 키가 배열의 첫 번째 요소에 존재하는 경우에만 작동합니다.어떤 위치에서든 키에 대해 작동할 수 있는 또 다른 원라이너가 있습니다.
$arr = ['monkey' => 1, 'giraffe' => 2, 'lion' => 3];
$arr += array_splice($arr, array_search('giraffe', array_keys($arr)), 1);
- 배열 유니온 연산자의 방식 때문에 숫자 키에서 이 작업이 실패합니다.
+=
)는 숫자 키(데모)와 함께 작동합니다. - 또한 이 스니펫은 대상 키가 배열에 존재한다고 가정합니다.대상 키가 존재하지 않는 경우, 결과는 첫 번째 요소를 끝으로 잘못 이동합니다. 다음과 같은 이유 때문입니다.
array_search()
돌아올 것입니다false
에 통합될 것입니다.0
타고array_splice()
(데모).
기본적인 미적분을 구현하고 배열 요소를 한 위치에서 다른 위치로 이동하는 범용 함수를 얻을 수 있습니다.
PHP의 경우 다음과 같습니다.
function magicFunction ($targetArray, $indexFrom, $indexTo) {
$targetElement = $targetArray[$indexFrom];
$magicIncrement = ($indexTo - $indexFrom) / abs ($indexTo - $indexFrom);
for ($Element = $indexFrom; $Element != $indexTo; $Element += $magicIncrement){
$targetArray[$Element] = $targetArray[$Element + $magicIncrement];
}
$targetArray[$indexTo] = $targetElement;
}
자세한 설명은 "glommatter"에서 "moving array elements"를 확인하십시오.
http://www.gloommatter.com/DDesign/programming/moving-any-array-elements-universal-function.html
언급URL : https://stackoverflow.com/questions/2359652/how-do-i-move-an-array-element-with-a-known-key-to-the-end-of-an-array-in-php
'programing' 카테고리의 다른 글
Oracle의 최대 문 길이는 얼마입니까? (0) | 2023.07.23 |
---|---|
PHP fileinfo가 정의되지 않은 함수입니다. (0) | 2023.07.23 |
자바스크립트에서 문자열을 연결하는 가장 효율적인 방법은? (0) | 2023.07.23 |
옵션 매개 변수를 함수에 전달하는 방법이 있습니까? (0) | 2023.07.23 |
mysql 테이블에서 datetime x min ago와 datetime x min ago 사이에서 선택 (0) | 2023.07.23 |