当前位置: 首页> 最新文章列表> 什么是 array_intersect_key?详细介绍这个 PHP 函数的作用和用法

什么是 array_intersect_key?详细介绍这个 PHP 函数的作用和用法

gitbox 2025-09-02
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 前置无关部分</span></span><span>
</span><span><span class="hljs-variable">$dummyArray</span></span><span> = [</span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </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">$key</span></span><span> =&gt; </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">$key</span></span><span> . </span><span><span class="hljs-string">" =&gt; "</span></span><span> . </span><span><span class="hljs-variable">$value</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 什么是 array_intersect_key?详细介绍这个 PHP 函数的作用和用法
 *
 * 在 PHP 中,array_intersect_key 是一个用于数组操作的重要函数。它的主要作用是
 * 返回一个数组,该数组包含了存在于多个数组中的相同键名的元素,而不关心它们的值。
 *
 * 基本语法:
 * array array_intersect_key(array $array1, array ...$arrays)
 *
 * 参数说明:
 * - $array1: 必须的,第一个输入数组。
 * - ...$arrays: 可选的,其他一个或多个数组,用于比较键名。
 *
 * 返回值:
 * 返回一个数组,这个数组只包含 $array1 中那些键也出现在其他数组中的元素。
 *
 * 使用示例:
 */</span>

</span><span><span class="hljs-variable">$array1</span></span><span> = [
    </span><span><span class="hljs-string">"a"</span></span><span> =&gt; </span><span><span class="hljs-number">100</span></span><span>,
    </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">200</span></span><span>,
    </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">300</span></span><span>
];

</span><span><span class="hljs-variable">$array2</span></span><span> = [
    </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">400</span></span><span>,
    </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">500</span></span><span>,
    </span><span><span class="hljs-string">"d"</span></span><span> =&gt; </span><span><span class="hljs-number">600</span></span><span>
];

</span><span><span class="hljs-comment">// 取出两个数组中相同键的元素</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);

<span class="hljs-comment">/**
 * 输出结果:
 * Array
 * (
 *     [b] =&gt; 200
 *     [c] =&gt; 300
 * )
 *
 * 可以看到,只有键 "b" 和 "c" 存在于 $array1 和 $array2 中,因此最终返回的数组
 * 包含这些键对应的 $array1 中的值。
 *
 * 注意事项:
 * 1. array_intersect_key 只比较数组的键名,不比较键值。
 * 2. 函数可以同时接受多个数组进行比较,最终返回只保留那些在所有数组中都存在的键。
 *
 * 示例:多个数组
 */</span>
</span><span><span class="hljs-variable">$array3</span></span><span> = [
    </span><span><span class="hljs-string">"c"</span></span><span> =&gt; </span><span><span class="hljs-number">700</span></span><span>,
    </span><span><span class="hljs-string">"b"</span></span><span> =&gt; </span><span><span class="hljs-number">800</span></span><span>
];

</span><span><span class="hljs-variable">$result2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_intersect_key</span></span><span>(</span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-variable">$array2</span></span><span>, </span><span><span class="hljs-variable">$array3</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result2</span></span><span>);

<span class="hljs-comment">/**
 * 输出结果:
 * Array
 * (
 *     [b] =&gt; 200
 *     [c] =&gt; 300
 * )
 *
 * 这里,最终结果是保留同时存在于 $array1, $array2 和 $array3 中的键。
 *
 * 总结:
 * array_intersect_key 是处理数组键名交集的利器,尤其适用于在多维数组或关联数组
 * 中筛选出指定的键,避免手动循环判断,提高代码效率和可读性。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>