연관 배열의 요소를 배열의 시작 부분으로 이동하는 가장 좋은 방법은 무엇입니까?
예를 들어 다음 배열이 있다고 가정합니다.
$myArray = array(
'two' => 'Blah Blah Blah 2',
'three' => 'Blah Blah Blah 3',
'one' => 'Blah Blah Blah 1',
'four' => 'Blah Blah Blah 4',
'five' => 'Blah Blah Blah 5',
);
내가하고 싶은 것은 ‘하나’요소를 처음으로 이동하고 다음 배열로 끝나는 것입니다.
$myArray = array(
'one' => 'Blah Blah Blah 1',
'two' => 'Blah Blah Blah 2',
'three' => 'Blah Blah Blah 3',
'four' => 'Blah Blah Blah 4',
'five' => 'Blah Blah Blah 5',
);
답변
배열 통합 연산자 ( +
)를 사용하여 알려진 키 ( one
)를 사용하여 원래 배열을 새 연관 배열에 조인 할 수 있습니다 .
$myArray = array('one' => $myArray['one']) + $myArray;
// or ['one' => $myArray['one']] + $myArray;
배열 키는 고유하므로 두 위치에 존재하는 것은 불가능합니다.
+ 연산자는 왼쪽 배열에 추가 된 오른쪽 배열을 반환합니다. 두 배열 모두에 존재하는 키의 경우 왼쪽 배열의 요소가 사용되며 오른쪽 배열의 일치하는 요소는 무시됩니다.
답변
숫자 배열 키가 있고 배열 키를 다시 색인화하려는 경우 다음 array_merge
과 같이 입력하는 것이 좋습니다 .
$myArray = array_merge(array($key => $value) + $myArray );
답변
조금 늦었지만 누군가가 필요할 경우를 대비하여이 작은 조각을 만들었습니다.
function arr_push_pos($key, $value, $pos, $arr)
{
$new_arr = array();
$i = 1;
foreach ($arr as $arr_key => $arr_value)
{
if($i == $pos)
$new_arr[$key] = $value;
$new_arr[$arr_key] = $arr_value;
++$i;
}
return $new_arr;
}
필요에 맞게 조정하거나 사용하고 인덱스를 설정 해제하여 이동하십시오. 연관 배열에서도 작동합니다.
답변
여기에 사용이 수행 얻는 또 다른 간단한 한 줄입니다 array_splice()
:
$myArray = array_splice($myArray,array_search('one',array_keys($myArray)),1) + $myArray;
답변
2 개의 배열이있는 경우 1st에는 2 번째 요소 배열의 맨 위로 이동할 요소가 있습니다.
$result = \array_replace($ArrayToMoveToTop, $myArray);
다음은 코드 샘플입니다.
//source array
$myArray = [
'two' => 'Blah Blah Blah 2',
'three' => 'Blah Blah Blah 3',
'one' => 'Blah Blah Blah 1',
'four' => 'Blah Blah Blah 4',
'five' => 'Blah Blah Blah 5',
];
// set necessary order
$orderArray = [
'one' => '',
'two' => '',
];
//apply it
$result = \array_replace($orderArray, $myArray);
\print_r($result);
답변
배열 의 시작 부분에 키와 함께 요소를 추가하는 데 사용할 수있는 array_unshift 에 대한 PHP 매뉴얼의 주석에 함수 가 있습니다.
function array_unshift_assoc(&$arr, $key, $val)
{
$arr = array_reverse($arr, true);
$arr[$key] = $val;
return array_reverse($arr, true);
}
위의 함수를 사용하여 요소를 설정 해제하고 다시 삽입하십시오.
$tmp = $myArray['one'];
unset($myArray['one']);
$myArray = array_unshift_assoc($myArray, 'one', $tmp);
보다 일반적인 접근 방식은 uksort 를 사용 하여 키별로 배열을 정렬하고 자체 정렬 기능을 제공하는 것입니다.