배열에서 빈 값을 제거하려고합니다. unset()을 사용할 때마다 하나의 키가 누락됩니다. 작업을 완료하는 데 더 좋은 방법이있을 수도 있지만 현재 코드에 키가없는 이유를 알아야합니까?빈 값을 제거하기 위해 배열을 반복하는 동안 unset() 사용
$values_arr = array(
0 => "Text",
1 => "",
2 => "",
3 => "Text",
4 => "",
5 => "Text"
);
작품 이론
for ($i = 0; $i < count($values_arr); $i++) {
if (empty($values_arr[$i])) {
echo "<br> Blank key found " . $i . ", value was >" . $values_arr[$i] . "<";
//Unset commented out
//unset($values_arr[$i]);
}
}
var_dump($values_arr);
출력
Blank key found 1, value was ><
Blank key found 2, value was ><
Blank key found 4, value was ><
array (size=6)
0 => string 'Text' (length=4)
1 => string '' (length=0)
2 => string '' (length=0)
3 => string 'Text' (length=4)
4 => string '' (length=0)
5 => string 'Text' (length=4)
설정 해제 작동하지
for ($i = 0; $i < count($values_arr); $i++) {
if (empty($values_arr[$i])) {
echo "<br> Blank key found " . $i . ", value was >" . $values_arr[$i] . "<";
unset($values_arr[$i]);
}
}
var_dump($values_arr);
에서 617,451,515,
출력
Blank key found 1, value was ><
Blank key found 2, value was ><
array (size=4)
0 => string 'Text' (length=4)
3 => string 'Text' (length=4)
4 => string '' (length=0)
5 => string 'Text' (length=4)
키 4가 설정되지 왜?
어떤 생각을 왜 다른 하나는 내가 것보다 그 이상을 이해할 필요가 작동하지 않습니다 작업 코드를 찾습니다. –
@RomanToasov for 루프에서 조건에 count를 사용하기 때문에 버전이 작동하지 않습니다! 따라서 2 개의 인덱스를 설정하지 않으면 인덱스 4에 도달하지 못하고 설정되지 않습니다. 따라서 for 루프에 들어가기 전에 카운트 값을 지정해야합니다! – Rizier123
Brilliant! 중간 표현은 for()가 모든 루프를 한 번만 평가하는 것이 아니라는 사실을 잊어 버렸습니다. "각 반복의 시작 부분에서 expr2가 평가됩니다." http://php.net/manual/en/control-structures.for.php –