首页 > 解决方案 > 防止添加重复数组

问题描述

在 JavaScript 中有一些方法可以做到这一点,但在 PHP 中它们似乎不起作用:

$myArray = array(
  array(
    "name" => "John Doe",
    "occupation" => "streamer"
  ),
  array(
    "name" => "Jena Doe",
    "occupation" => "delivery services"
  )
);

$newItem = array(
  "name" => "John Doe",
  "occupation" => "delivery services"
);

// now check if the name already exists
// to prevent from adding a duplicate clone of John Doe
if (!array_map(function($i){ if ($i['name'] === $newItem['name']) return true; else return false; }, $myArray)) {
  $myArray[] = $newItem;
}

为什么我会得到Undefined variable: $newItem,我该怎么做?

标签: phpmultidimensional-array

解决方案


您可以在添加之前使用简单的测试in_array来查看新数组是否包含重复名称?

$src = array(
    array(
        "name"          => "John Doe",
        "occupation"    => "streamer"
    ),
    array(
        "name"          => "Jena Doe",
        "occupation"    => "delivery services"
    )
);
$new=array(
    "name"              => "John Doe",
    "occupation"        => "delivery services"
);


if( !in_array( $new['name'], array_values( array_column( $src, 'name' ) ) ) ){
    $src[]=$new;
}

推荐阅读