[php] PHP : 연관 배열 요소를 배열의 처음으로 이동

연관 배열의 요소를 배열의 시작 부분으로 이동하는 가장 좋은 방법은 무엇입니까?

예를 들어 다음 배열이 있다고 가정합니다.

$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 를 사용 하여 키별로 배열을 정렬하고 자체 정렬 기능을 제공하는 것입니다.


답변