루프에 가서 if
를, 그것은 어렵지 않다 꽤 빠른 것입니다.
$delicatessen = [
"Papples", "Gelato", "Gelato", "Banana", "Papples","Papples"
];
foreach ($delicatessen as $e) {
if (@$counter[$e]++) $e .= $counter[$e];
$new[] = $e;
}
은 기본적으로 어떤이가하는 것은 항상 명확하게, 새로운 배열에 를 요소를 추가하는 것입니다,하지만 그것을 수정하거나 없습니다. 조건은 $counter
배열 이며 항목이 나타나는 시간을 저장합니다. 모두는 " 날아라."에서 PHP가 허용합니다.
$counter[$e]
을 검색 할 때이 요소가 아직 존재하지 않으므로 반환 값은 조건을 실패로 만듭니다. 그러나 부작용은 undef가 반환 된 후 이 증가하므로 (++
) 이 $counter[$e]
이 1
이되도록 증가합니다.
측면이 이미 2
될 것 if
문이 $counter[$e]
실행되는 시점에서 영향을 미치는와이, 조건 패스를 만들 것입니다 다시 1
의 반환 값을 액세스 할 때 반복 미래에합니다. 문은이 번호를 요소의 끝에 연결했습니다.
이렇게하면 처음에는 아무 것도 연결되지 않지만 부작용이 있습니다. 다음 반복에서 숫자는 요소로 연결됩니다.
@
연산자는 여기에 PHP 고지를 억제하는 데 사용됩니다. 첫 패스에서 정의되지 않은 요소를 다루는 사람이 이니주의해야합니다. 스크립트가 중단되지 않습니다. 물론이 연산자는 으로 사용해야하지만이 경우에는 코드를 단순화하는 데 도움이됩니다. 은 덜 엄격합니다.
'if'조건을 설명해 주시겠습니까? – Bhaskar
@Bhaskar 예, 답변을 업데이트했습니다 :) – sidyll