php - 防止添加重复数组
问题描述
在 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
,我该怎么做?
解决方案
您可以在添加之前使用简单的测试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;
}
推荐阅读
- php - 在多维数组中搜索列值
- r - 不均匀数量的标记和下标越界错误
- delphi - 使用 NetHTTPClient 下载 XML 失败
- c# - 尝试删除 NLog.config 会导致“无法修改源自导入文件的评估对象”
- cassandra - Cassandra 压缩宽行大分区
- php - PHP、PDO、SQLite INNER JOIN 语句和变量
- php - 计数 JSON 结果中的项目
- jquery - Flexslider 标题被修复
- c++ - 为什么 std::uniform_real_distribution
产生NaN? - javascript - 如何在 node.js express 中使用 sequelize 和控制器?