使用 in_array() 進行多維數組搜尋
in_array() 函數擅長驗證線性數組中值是否存在。然而,當涉及多維數組時,它的功能就不足了。本文深入探討了 in_array() 在多維場景中的局限性,並介紹了一種遞歸解決方案。
in_array() 與多維數組的限制
$ a = array("Mac", "NT", "Irix", "Linux" );<br>if (in_array("Irix", $a)) echo "得到了Irix"; //有效<br>
相反,將in_array() 應用於多維數組,如下所示,將產生不準確的結果:
$b = array( array("Mac", "NT"), array("Irix", "Linux"));<br>if (in_array("Irix", $b)) echo "得到了Irix"; // 失敗<br>
多維數組搜尋的遞歸解決方案
為了有效地搜尋多維數組中的值,遞歸方法是必需的。以下程式碼片段為此目的定義了一個自訂函數:
<br>function in_array_r($needle, $haystack, $strict = false) {<pre class="brush:php;toolbar:false">foreach ($haystack as $item) { if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) { return true; } } return false;
}
用法
in_array_r() 函數的使用如下:
in_array_r() 函數的使用如下:
$b = array(array("Mac", "NT"), array("Irix", "Linux"));echo in_array_r("Irix", $b) ? 'found' : '找不到';<p></p>
以上是如何在 PHP 中有效搜尋多維數組中的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!