php array_intersect 与严格类型
Posted
技术标签:
【中文标题】php array_intersect 与严格类型【英文标题】:php array_intersect with strict type 【发布时间】:2015-06-17 14:53:30 【问题描述】:php array_intersect 没有任何严格类型检查的选项,因为他们已经给出了in_array
$array1 = array(true,2);
$array2 = array(1, 2, 3, 4, 5, 6);
var_dump(array_intersect($array1, $array2));
结果是:
array(2)
[0] => bool(true)
[1] => int(2)
预期结果在哪里
array(1)
[0] => int(2)
我错过了什么吗?
可能问题与PHP array_intersect() - how does it handle different types?重复
【问题讨论】:
【参考方案1】:PHP 不是一种强类型语言,就它而言,任何不为假、为真并且将在布尔运算中进行评估的东西。 您可以在 PHP 手册 http://php.net/manual/en/language.types.boolean.php 上获得更多信息
但是,PHP 确实提供了使用===
严格检查类型的功能,正如您所说,array_intersect
不使用此功能,但可以使用array_uintersect
定义您自己的回调函数,该函数将执行值的比较。
http://php.net/manual/en/function.array-uintersect.php
【讨论】:
【参考方案2】:如果你想要严格的array_intersect,你可以写你自己的方法,像这样:
<?php
public function array_intersect_strict(array $array1, array $array2)
return array_filter($array1, function ($value) use ($array2)
return in_array($value, $array2, true);
);
【讨论】:
以上是关于php array_intersect 与严格类型的主要内容,如果未能解决你的问题,请参考以下文章