117.info
人生若只如初见

php中array_intersect使用无效怎么解决

如果使用array_intersect()函数时无效,可能有以下几个原因:

  1. 数组中的值是字符串,但是存储的是数字形式。这种情况下,您可以使用array_map()函数将字符串转换为数字。
$array1 = ['1', '2', '3'];
$array2 = [2, 3, 4];

$array1 = array_map('intval', $array1);

$result = array_intersect($array1, $array2);
print_r($result);
  1. 数组中的值是对象,但是对象的比较是通过引用,而不是值。如果想比较对象的属性值,可以通过自定义一个匿名函数来实现。
class Item {
    private $id;

    public function __construct($id) {
        $this->id = $id;
    }

    public function getId() {
        return $this->id;
    }
}

$item1 = new Item(1);
$item2 = new Item(2);
$item3 = new Item(3);

$array1 = [$item1, $item2];
$array2 = [$item2, $item3];

$result = array_intersect($array1, $array2);
print_r($result); // []

$result = array_uintersect($array1, $array2, function($a, $b) {
    return $a->getId() <=> $b->getId();
});
print_r($result); // [$item2]

请确保比较的数据类型是一致的,并且按照您的需求使用适当的比较函数。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe6e8AzsLAQ5TAVY.html

推荐文章

  • php rawurlencode怎样处理编码

    rawurlencode() ? PHP ??????,????????? application/x-www-form-urlencoded MIME ????????????? URL ??,??????????????????(??,??????? )?
    ??????????,???...

  • php var_dump能自定义输出吗

    是的,您可以使用 var_dump() 函数的第二个和第三个参数来自定义输出。
    var_dump() 函数可以接受以下参数: 变量:要检查的变量。
    输出选项:一个整数...

  • php var_dump怎样提高效率

    var_dump() 是一个非常有用的 PHP 函数,用于显示变量的详细信息。然而,在大型项目中,使用 var_dump() 可能会导致性能问题。以下是一些建议,可以帮助提高 var...

  • php var_dump在 web 中如何用

    var_dump() 是一个 PHP 函数,用于显示变量的详细信息,包括类型、值和结构。在 Web 环境中,你可以通过以下步骤使用 var_dump(): 创建一个 PHP 文件(例如:va...

  • Java怎么在Array和List之间进行转换

    在Java中,可以使用toArray()方法将List转换为Array,也可以使用Arrays.asList()方法将Array转换为List。以下是具体的示例代码:
    将List转换为Array:

  • vscode如何运行代码

    在VSCode中运行代码有以下几种方式: 打开VSCode后,点击左侧的“资源管理器”按钮,找到你的代码文件,右键点击并选择“在终端中打开”(或使用快捷键Ctrl+`)。...

  • php中array_intersect的用法是什么

    array_intersect函数是PHP中用于计算数组的交集的函数。它接受多个数组作为参数,并返回一个包含这些数组中共同元素的新数组。
    语法:
    array_intersec...

  • php数组不能添加成员怎么解决

    在PHP中,数组可以通过以下几种方式添加成员: 使用索引添加成员:
    $arr = array();
    $arr[0] = 'value1';
    $arr[1] = 'value2'; 使用array_push()...