IT story

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

hot-time 2020. 9. 18. 19:24
반응형

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',
);

이것은 작동합니다 :

$myArray = array('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);

There's a function in the comments of the PHP manual for array_unshift which can be used to add an element, with key, to the beginning of an array:

function array_unshift_assoc(&$arr, $key, $val)
{
    $arr = array_reverse($arr, true);
    $arr[$key] = $val;
    return array_reverse($arr, true);
}

Unset the element and reinsert it again with the above function:

$tmp = $myArray['one'];
unset($myArray['one']);
$myArray = array_unshift_assoc($myArray, 'one', $tmp);

A more general approach may be to use uksort to sort your array by keys and provide a sorting function of your own.

참고URL : https://stackoverflow.com/questions/11276313/php-move-associative-array-element-to-beginning-of-array

반응형