Array_Search는 배열에 해당하는 값을 찾는 데 사용됩니다. 예를 들어:
<span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"orange"</span></span><span>];
</span><span><span class="hljs-variable">$key</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_search</span></span><span>(</span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-comment">// 결과:$key = 1</span></span><span>
</span></span>Array_flip 과 비교하여 Array_Search는 추가 배열을 뒤집지 않고 값에서 직접 키를 찾을 수 있습니다. 그러나 중복 값 또는 더 복잡한 조건부 일치 에 직면 할 때는 혼자 사용하기에 충분히 유연하지 않을 수 있습니다.
그러한 요구 사항이 있다고 가정합니다.
사용자 ID와 사용자 이름이 포함 된 배열이 있습니다. 사용자 이름을 기반으로 해당 ID를 빠르게 찾고자합니다.
예제를 직접 살펴 보겠습니다.
<span><span><span class="hljs-variable">$users</span></span><span> = [
</span><span><span class="hljs-number">1001</span></span><span> => </span><span><span class="hljs-string">"Alice"</span></span><span>,
</span><span><span class="hljs-number">1002</span></span><span> => </span><span><span class="hljs-string">"Bob"</span></span><span>,
</span><span><span class="hljs-number">1003</span></span><span> => </span><span><span class="hljs-string">"Charlie"</span></span><span>,
</span><span><span class="hljs-number">1004</span></span><span> => </span><span><span class="hljs-string">"Alice"</span></span><span>
];
</span></span>Array_Search를 사용하여 "Alice"를 찾는 경우 :
<span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_search</span></span><span>(</span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-variable">$users</span></span><span>);
</span><span><span class="hljs-comment">// 결과:$id = 1001 (첫 번째 경기 만 반환합니다)</span></span><span>
</span></span>문제는 배열에 중복 값이있을 때 Array_Search가 모든 일치를 반환 할 수 없다는 것입니다. 현재 Array_flip을 결합하여 최적화 할 수 있습니다.
Array_flip을 통해 사용자 이름을 키로 사용하고 사용자 ID를 값으로 사용할 수 있으므로 검색하는 것이 더 편리합니다.
<span><span><span class="hljs-variable">$flipped</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_flip</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$flipped</span></span><span>);
</span></span>그러나이 방법에는 문제가 있습니다. 값 (사용자 이름)이 반복되면 Array_flip은 이전 키를 무시하고 마지막 키를 유지합니다. 현재 루프 또는 Array_keys를 통해 모든 일치를 얻는 것과 같이 로직을 결합해야합니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_keys</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, </span><span><span class="hljs-string">"Alice"</span></span><span>);
</span><span><span class="hljs-comment">// 결과: [1001, 1004]</span></span><span>
</span></span>요구 사항이 첫 번째 일치 키를 찾아서 복제가 덮어 쓰는 것을 방지하는 것이라면 먼저 Array_Search를 사용하여 첫 번째를 찾은 다음 Array_Keys를 사용하여 모든 것을 얻을 수 있도록 유연성이 높아질 수 있습니다.
관련 태그:
array_flip