배열의 모든 값을 지우는 데 더 효과적인 것은 무엇입니까? 첫 번째는 두 번째 예제의 루프에서 매번 해당 기능을 사용해야합니다.
foreach ($array as $i => $value) {
unset($array[$i]);
}
아니면 이거
foreach($blah_blah as $blah) {
$foo = array();
//do something
$foo = null;
}
답변
Zack이 아래 주석에서 말했듯이 간단히 사용하여 다시 인스턴스화 할 수 있습니다
$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();
배열을 빈 배열로 재설정하는 것이 좋습니다.