<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// --------------------</span></span><span>
</span><span><span class="hljs-comment">// 這裡是與文章內容無關的 PHP 代碼示例</span></span><span>
</span><span><span class="hljs-variable">$dummyArray</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$dummyArray</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> * </span><span><span class="hljs-number">2</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// --------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
---
</span><span><span class="hljs-comment"># array_key_exists 能檢查多維數組中的鍵嗎?具體該怎麼用?</span></span><span>
在 PHP 中,`array_key_exists` 函數用於檢查一個數組中是否存在指定的鍵。它的基本用法如下:
```php
</span><span><span class="hljs-variable">$array</span></span><span> = [
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Alice'</span></span><span>,
</span><span><span class="hljs-string">'age'</span></span><span> => </span><span><span class="hljs-number">25</span></span><span>
];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'name'</span></span><span>, </span><span><span class="hljs-variable">$array</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"鍵 'name' 存在"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"鍵 'name' 不存在"</span></span><span>;
}
</span></span>運行結果:
<span><span>鍵 </span><span><span class="hljs-string">'name'</span></span><span> 存在
</span></span>需要注意的是, array_key_exists只能檢查當前數組層級的鍵,它不會自動遞歸檢查多維數組中的嵌套鍵。例如:
<span><span><span class="hljs-variable">$multiArray</span></span><span> = [
</span><span><span class="hljs-string">'user'</span></span><span> => [
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>,
</span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'[email protected]'</span></span><span>
]
];
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'user'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>)); </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'name'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>)); </span><span><span class="hljs-comment">// false</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-string">'name'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>[</span><span><span class="hljs-string">'user'</span></span><span>])); </span><span><span class="hljs-comment">// true</span></span><span>
</span></span>上面的例子說明:
'user'是$multiArray的頂層鍵,所以檢查返回true 。
'name'並不是$multiArray的頂層鍵,所以直接檢查返回false 。
如果想檢查嵌套數組中的'name'鍵,需要先訪問$multiArray['user']再調用array_key_exists 。
如果你想在多維數組中遞歸檢查某個鍵是否存在,可以自己寫一個輔助函數:
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">array_key_exists_recursive</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$key</span></span></span><span>, </span><span><span class="hljs-variable">$array</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">array_key_exists</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-variable">$array</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$array</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>) && </span><span><span class="hljs-title function_ invoke__">array_key_exists_recursive</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
}
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">false</span></span><span>;
}
</span><span><span class="hljs-comment">// 示例</span></span><span>
</span><span><span class="hljs-variable">$multiArray</span></span><span> = [
</span><span><span class="hljs-string">'user'</span></span><span> => [
</span><span><span class="hljs-string">'name'</span></span><span> => </span><span><span class="hljs-string">'Bob'</span></span><span>,
</span><span><span class="hljs-string">'email'</span></span><span> => </span><span><span class="hljs-string">'[email protected]'</span></span><span>
],
</span><span><span class="hljs-string">'settings'</span></span><span> => [
</span><span><span class="hljs-string">'theme'</span></span><span> => </span><span><span class="hljs-string">'dark'</span></span><span>
]
];
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists_recursive</span></span><span>(</span><span><span class="hljs-string">'email'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>)); </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists_recursive</span></span><span>(</span><span><span class="hljs-string">'theme'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>)); </span><span><span class="hljs-comment">// true</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_key_exists_recursive</span></span><span>(</span><span><span class="hljs-string">'age'</span></span><span>, </span><span><span class="hljs-variable">$multiArray</span></span><span>)); </span><span><span class="hljs-comment">// false</span></span><span>
</span></span>這個函數會遍歷數組中的每一層,如果找到了指定的鍵就返回true ,否則最終返回false 。
array_key_exists默認只檢查當前數組層級的鍵。
多維數組中嵌套的鍵,需要先訪問對應的子數組,或者使用遞歸函數。
使用遞歸方法可以方便地檢查多層數組中是否存在某個鍵,非常適合配置數組或複雜數據結構。
通過這種方法,你可以更靈活地處理多維數組中的鍵檢查,而不會被array_key_exists的局限性所困擾。
<span></span>