source

PHP 배열 값을 지우는 가장 좋은 방법

nicesource 2022. 10. 15. 08:30
반응형

PHP 배열 값을 지우는 가장 좋은 방법

어레이 내의 모든 값을 클리어하는 데 더 효율적인 것은 무엇입니까?첫 번째 예에서는 두 번째 예제의 루프에서 매번 이 함수를 사용해야 합니다.

foreach ($array as $i => $value) {
    unset($array[$i]);
}

아니면 이거?

foreach($blah_blah as $blah) {
    $foo = array();
    //do something
    $foo = null;
}

잭이 아래 코멘트에서 말한 바와 같이, 다음 명령을 사용하여 간단히 재인스톨 할 수 있습니다.

$foo = array(); // $foo is still here

심볼 테이블에서 $foo도 지워지기 때문에 보다 강력한 사용을 원하는 경우 나중에 어레이가 필요할 경우 다시 인스턴스화하십시오.

unset($foo); // $foo is gone
$foo = array(); // $foo is here again

변수를 빈 배열로 리셋하려는 경우 다시 초기화하기만 하면 됩니다.

$foo = array();

이것에 대한 참조는, 다음과 같이 유지됩니다.

$foo = array(1,2,3);
$bar = &$foo;
// ...
$foo = array(); // clear array
var_dump($bar); // array(0) { } -- bar was cleared too!

참조를 끊으려면 먼저 설정을 해제하십시오.

$foo = array(1,2,3);
$bar = &$foo;
// ...
unset($foo); // break references
$foo = array(); // re-initialize to empty array
var_dump($bar); // array(3) { 1, 2, 3 } -- $bar is unchanged

슬프게도 저는 다른 질문들에 대답할 수도 없고, 충분한 평판도 없지만, 제게 매우 중요한 것을 지적할 필요가 있고, 그것이 다른 사람들에게도 도움이 될 것이라고 생각합니다.

원래 배열의 참조가 필요하지 않는변수 설정을 해제하는 것이 좋습니다.

내 뜻을 명확히 하기 위해서:배열의 참조를 사용하는 함수가 있는 경우, 예를 들어 다음과 같은 정렬 함수가 있습니다.

function special_sort_my_array(&$array)
{
    $temporary_list = create_assoziative_special_list_out_of_array($array);

    sort_my_list($temporary_list);

    unset($array);
    foreach($temporary_list as $k => $v)
    {
        $array[$k] = $v;
    }
}

안 돼!여기서 조심해요.unset참조를 삭제하기 때문에 변수는$array다시 생성되어 올바르게 채워지지만 함수 외부에서 값에 액세스할 수 없습니다.

그래서 레퍼런스가 있으면$array = array()대신unset덜 깨끗하고 이해하기 쉬울지라도 말이다.

배열이 연관성이 있다면 첫 번째라고 할 수 있겠네요.그렇지 않을 경우for루프:

for ($i = 0; $i < count($array); $i++) { unset($array[$i]); }

가능한 경우라도,

$array = array();

어레이를 빈 어레이로 리셋하는 것이 좋습니다.

충분하지 않나요?

unset($array);

어때.$array_name = array();?

어레이를 비우고 참조를 유지하는 데 사용합니다.

array_splice($myArray, 0);

unset()를 사용하여 어레이를 클리어했지만 unset()가 어레이를 null로 만들기 때문에 예를 들어 어레이를 다시 설정해야 합니다.

<?php 
    $arr = array();
    array_push($arr , "foo");
    unset($arr); // this will set the array to null hence you need the line below or redeclaring it.
    $arr  = array();

    // do what ever you want here
?>

단순하고 경제적인 방법(사용할 수 있는 표지판이 적음)일 수도 있습니다.

$array = [];

php 매뉴얼에서 읽을 수 있습니다.

PHP 5.4에서는 array()를 []로 대체하는 짧은 배열 구문을 사용할 수도 있습니다.

이 질문은 오래된 질문이지만, 이 문제를 해결하기 위해 어레이 내의 모든 값을 설정 해제하는 재귀 함수를 작성했습니다.지정된 배열의 값도 배열일 수 있으므로 재귀적입니다.난 그게 좋아.

function empty_array(& $complete_array) {
    foreach($complete_array as $ckey => $cvalue)
    {
        if (!is_array($cvalue)) {
            $complete_array[$ckey] = "";
        } else {
            empty_array( $complete_array[$ckey]);
        }

    }
    return $complete_array;

}

이렇게 하면 모든 키와 하위 배열이 있는 배열을 얻을 수 있지만 값이 비어 있습니다.

PHP > = 5.4의 경우

$var = []; 

다음보다 빠를지는 모르겠지만

$var = array();

적어도 깨끗해 보이긴 해요

설정 해제 기능은 가비지 컬렉터가 점심 시간을 갖지 않고 라운드를 할 때 유용합니다.

그러나 설정되지 않은 함수는 데이터에 대한 변수 참조를 파괴할 뿐이며 데이터는 여전히 메모리에 존재하며 PHP는 더 이상 포인터가 없음에도 불구하고 메모리를 사용 중인 것으로 간주합니다.

솔루션:할당null가비지 콜렉터가 데이터를 입수할 때까지 데이터를 클리어할 수 있습니다.

$var = null;

비슷한 방법으로 설정을 해제하는 거죠!

unset($var);

이것은 강력하고 테스트되지 않은 상태($gradearray);//어레이를 재설정합니다.

그 질문은 게시물로는 대답할 수 없다.키를 유지하고 값을 클리어하는 것이 질문의 초점입니다.

foreach($resultMasterCleaned['header'] as $ekey => $eval) {
    $resultMasterCleaned[$key][$eval] = "";                 
}

CSV 값을 보유하여 특정 행을 공백으로 하는 2차원 어레이의 경우와 같습니다.루프 스루만이 유일한 방법인 것 같아.

언급URL : https://stackoverflow.com/questions/10261925/best-way-to-clear-a-php-arrays-values

반응형