Foreach 루프에서 어레이 값 설정 해제
어레이를 통과하여 특정 링크를 확인하고 검출되면 해당 링크를 어레이에서 삭제하도록 foreach 루프가 설정되어 있습니다.
내 코드:
foreach($images as $image)
{
if($image == 'http://i27.tinypic.com/29yk345.gif' ||
$image == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[$image]);
}
}
그러나 어레이 엔티어는 제거되지 않습니다.그건 아마 와 관련이 있을 것이다.$images[$image]
어레이 엔트리의 열쇠가 아니기 때문에 콘텐츠뿐입니까?카운터를 설치하지 않고 할 수 있는 방법이 있나요?
감사해요.
편집: 감사합니다만, 어레이 엔트리가 실제로 삭제되지 않는 또 다른 문제가 있습니다.
새로운 코드:
foreach($images[1] as $key => $image)
{
if($image == 'http://i27.tinypic.com/29yk345.gif')
$image == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[$key]);
}
}
$images는 현재 2차원 배열로 작동하기 때문에 $images[1]가 필요합니다.확인해보니 어레이 요소를 정상적으로 돌아갔습니다.또한 일부 요소에는 실제로 삭제하고 싶은 URL이 있지만 삭제되지 않는 것도 있습니다.이건 내 거야$images
어레이:
Array
(
[0] => Array
(
[0] => useless
[1] => useless
[2] => useless
[3] => useless
[4] => useless
)
[1] => Array
(
[0] => http://i27.tinypic.com/29yk345.gif
[1] => http://img3.abload.de/img/10nx2340fhco.gif
[2] => http://img3.abload.de/img/10nx2340fhco.gif
[3] => http://i42.tinypic.com/9pp2456x.gif
)
)
감사합니다!
foreach($images as $key => $image)
{
if(in_array($image, array(
'http://i27.tinypic.com/29ykt1f.gif',
'http://img3.abload.de/img/10nxjl0fhco.gif',
'http://i42.tinypic.com/9pp2tx.gif',
))
{
unset($images[$key]);
}
}
시험해 보세요.
foreach ($images[1] as $key => &$image) {
if (yourConditionGoesHere) {
unset($images[1][$key])
}
}
unset($image); // detach reference after loop
보통.foreach
는 어레이의 복사본에서 작동하므로 변경 내용은 해당 복사본에 적용되며 실제 어레이에는 영향을 주지 않습니다.
따라서 다음 방법으로 값을 설정 해제해야 합니다.$images[$key]
;
에 대한 참조&$image
는, 루프가 어레이의 카피를 작성해 메모리를 낭비하는 것을 방지합니다.
첫 번째 질문에 답하려면(편집 후) 설정을 해제해야 합니다($images[1][$key];
이제 PHP가 어떻게 동작하는지에 대해 설명하겠습니다.포어치 루프에서 어레이 요소를 안전하게 해제할 수 있습니다.또, 어레이 항목의 유무는 문제가 되지 않습니다.다음 코드를 참조하십시오.
$a=[1,2,3,4,5];
foreach($a as $key=>$val)
{
if ($key==3) unset($a[$key]);
}
print_r($a);
다음의 출력이 있습니다.
Array
(
[0] => 1
[1] => 2
[2] => 3
[4] => 5
)
보시는 것처럼 포어치루프 내에서 수정 설정을 해제하면 모든 것이 정상적으로 동작합니다.
어레이 요소의 인덱스를 사용하여 어레이에서 제거할 수 있습니다. 다음 번에 어레이 요소를 사용할 때$list
variable을 지정하면 배열이 변경된 것을 알 수 있습니다.
이런 거 해봐
foreach($list as $itemIndex => &$item) {
if($item['status'] === false) {
unset($list[$itemIndex]);
}
}
$image
고객님의 경우 아이템의 값이지 키가 아닙니다.다음 구문을 사용하여 키도 가져옵니다.
foreach ($images as $key => $value) {
/* … */
}
이것으로 아이템을 삭제할 수 있습니다.unset($images[$key])
.
한 가지 해결책은 아이템의 키를 사용하여 아이템을 삭제하는 것입니다.Foreach를 사용하여 루프할 때 키와 값을 모두 삭제할 수 있습니다.
예:
$arr = array(
'a' => 123,
'b' => 456,
'c' => 789,
);
foreach ($arr as $key => $item) {
if ($item == 456) {
unset($arr[$key]);
}
}
var_dump($arr);
마지막으로 다음 어레이를 제공합니다.
array
'a' => int 123
'c' => int 789
같은 .
foreach($images as $key => $image)
{
if($image == 'http://i27.tinypic.com/29yk345.gif' ||
$image == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[$key]);
}
}
foreach($images as $key=>$image)
{
if($image == 'http://i27.tinypic.com/29ykt1f.gif' ||
$image == 'http://img3.abload.de/img/10nxjl0fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2tx.gif')
{ unset($images[$key]); }
}
!!key=>$image로 지정됩니다.
cause $image는 값이기 때문에 $cause[$image]는 의미가 없습니다.
또,
$i--;
각 설정 후 요소를 건너뛰지 않도록 설정/
설정을 했을 때$item[45]
는 for-loop이다$item[45]
-어느쪽이었나[46]
설정을 해제하기 전에.이렇게 하지 않으면 설정 해제 후 항상 요소를 건너뜁니다.
이 늦어서 에서도 같은 했는데, 최근 PHP에서도 같은 문제가 발생했는데, PHP를 사용하지 않는 어레이로 작업할 때$key => $value
「」, 「」를 foreach
이 변수 합니다.$image
이 코드를 사용하면 문제가 해결됩니다.
for ($i=0; $i < count($images[1]); $i++)
{
if($images[1][$i] == 'http://i27.tinypic.com/29yk345.gif' ||
$images[1][$i] == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$images[1][$i] == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[1][$i]);
}
}
var_dump($images);die();
언급URL : https://stackoverflow.com/questions/2008866/unsetting-array-values-in-a-foreach-loop
'source' 카테고리의 다른 글
JVM 인수를 통한 log4j 구성 (0) | 2022.11.08 |
---|---|
드롭다운 상자에서 모든 옵션을 지우려면 어떻게 해야 합니까? (0) | 2022.10.30 |
원치 않는 동작에 대한 VueJs v- (0) | 2022.10.30 |
특정 회선의 ts 규칙을 비활성화하려면 어떻게 해야 합니까? (0) | 2022.10.30 |
항목을 특정 인덱스의 배열에 삽입하는 방법(JavaScript) (0) | 2022.10.30 |