PHP의 연관 배열에서 빈 키가있는 값을 어떻게 제거합니까?
-
04-07-2019 - |
문제
나는 빈 문자열 인 것처럼 보이지만 사용하는 키가 있습니다. unset($array[""]);
키/값 쌍을 제거하지 않습니다. 내가 원하는 것을 수행하는 다른 기능이 보이지 않으므로 함수를 호출하는 것이 더 복잡하다고 생각합니다.
print_r의 요소 라인은입니다 [] => 1
, 이는 키가 빈 문자열임을 나타냅니다.
var_export를 사용하면 요소가 다음과 같이 표시됩니다 '' => 1
.
var_dump를 사용하면 요소가 다음과 같이 표시됩니다 [""]=>int(1)
.
지금까지, 나는 제안 된 모든 제거 방법을 시도했지만 요소를 제거한 사람은 없었습니다. 나는 시도했다 unset($array[""]);
, unset($array['']);
, 그리고 unset($array[null]);
운이 없습니다.
해결책
노력하다 unset($array[null]);
그래도 작동하지 않으면 배열을 통해 인쇄하십시오 var_export
또는 var_dump
대신에 print_r
, 이를 통해 키 유형을 볼 수 있으므로. 사용 var_export
PHP 구문의 데이터를 보려면
var_export($array);
VAR_EXPORT는 재귀 구조에서 작동하지 않습니다.
다른 팁
시험을 마친:
$someList = Array('A' => 'Foo', 'B' => 'Bar', '' => 'Bah');
print_r($someList);
echo '<br/>';
unset($someList['A']);
print_r($someList);
echo '<br/>';
unset($someList['']);
print_r($someList);
echo '<br/>';
갖다:
Array ( [A] => Foo [B] => Bar [] => Bah )
Array ( [B] => Bar [] => Bah )
Array ( [B] => Bar )
키가 어디에서 왔는지 분석해야합니다 ...
내 생각에 그것은 빈 문자열이 아니라는 것입니다. 당신이 얻는 것을 보려면 다음을 시도하십시오.
foreach ($array as $index => $value) {
echo $index;
echo ' is ';
echo gettype($index);
echo "\n";
}
사용해보십시오 var_dump
대신에 print_r
. 이것은 당신에게 열쇠가 무엇인지에 대한 더 나은 아이디어를 줄 수 있습니다.
무엇을 말해야할지 모르겠습니다. 이 스크립트를 실행합니다
<?php
$arr = array(
false => 1
, true => 2
, null => 3
, 'test' => 4
// , '' => 5
);
print_r( $arr );
foreach ( $arr as $key => $value )
{
var_dump( $key );
}
unset( $arr[''] );
print_r( $arr );
다음 출력을 얻습니다
Array
(
[0] => 1
[1] => 2
[] => 3
[test] => 4
)
int(0)
int(1)
string(0) ""
string(4) "test"
Array
(
[0] => 1
[1] => 2
[test] => 4
)
"NULL"배열 키가 빈 문자열로 변환되었는지 확인하십시오.
배열 사본으로 작업하지 않습니까? 기능 내부에서 Unset () 로이 호출을 한 경우 가능합니다.
이것은 PHP 5.2.0에서 테스트되었습니다
해당 라인 전후에 체커 코드를 제거하는 데 사용하는 코드를 게시하십시오.
내가 찾고있는 것은 다음과 같습니다.
var_export($array);
echo "\n";
unset($array[""]);
var_export($array);
둘 다의 전체 출력도 게시하십시오 var_export
윤곽.
나는 다음과 같은 것을 찾고 있습니다.
array (
'' => 1,
)
array (
)