Array_search wird verwendet, um einen Wert zu finden, der einem Array entspricht. Zum Beispiel:
<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">// Ergebnis:$key = 1</span></span><span>
</span></span>Im Vergleich zu Array_Flip kann Array_Search Tasten direkt aus Werten finden, ohne dass Arrays zusätzlich umgedreht werden. Bei doppelten Werten oder einer komplexeren bedingteren Übereinstimmung ist es jedoch möglicherweise nicht flexibel genug, sie allein zu verwenden.
Angenommen, wir haben eine solche Anforderung:
Es gibt ein Array, das die Benutzer -ID und den Benutzernamen enthält. Wir möchten die entsprechende ID schnell auf dem Benutzernamen finden.
Schauen wir uns das Beispiel direkt an:
<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>Wenn wir Array_search verwenden, um "Alice" zu finden:
<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">// Ergebnis:$id = 1001 (Beachten Sie, dass es nur das erste Spiel zurückgibt)</span></span><span>
</span></span>Das Problem ist, dass Array_search , wenn es im Array doppelte Werte gibt, nicht alle Übereinstimmungen zurückgeben kann. Zu diesem Zeitpunkt können Sie Array_flip kombinieren, um sie zu optimieren.
Mit Array_Flip können Sie den Benutzernamen als Schlüssel und die Benutzer -ID als Wert verwenden, sodass es bequemer ist, zu suchen:
<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>Mit dieser Methode gibt es jedoch ein Problem: Wenn der Wert (Benutzername) wiederholt wird, überschreibt Array_flip den vorherigen Schlüssel und behält nur den letzten. Zu diesem Zeitpunkt müssen wir die Logik kombinieren, um damit umzugehen, z. B. alle Übereinstimmungen durch Schleifen oder Array_Keys zu erhalten:
<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">// Ergebnis: [1001, 1004]</span></span><span>
</span></span>Wenn die Anforderung darin besteht, den ersten passenden Schlüssel zu finden und zu verhindern, dass Duplikate überschrieben werden , können wir zuerst Array_Search verwenden, um den ersten zu finden, und dann Array_keys verwenden, um alles zu erhalten, damit die Flexibilität höher ist.
Verwandte Tags:
array_flip