php - PHP - 多维数组检查重复项(没有 array_unique)
问题描述
更新
我为自己找到了这个问题的答案并发布了它,但我只能在两天内接受它..
我创建了这个多维数组:
array (
0 =>
array (
'OrderDate' => '02.11.2018',
'ClientNumber' => 5500
)
)
array (
0 =>
array (
'OrderDate' => '02.11.2018',
'ClientNumber' => 5500
)
)
array (
0 =>
array (
'OrderDate' => '05.03.2018',
'ClientNumber' => 5500
)
)
array (
0 =>
array (
'OrderDate' => '10.12.2018',
'ClientNumber' => 2200
)
)
array (
0 =>
array (
'OrderDate' => '10.12.2018',
'ClientNumber' => 2200
)
)
该数组不应包含来自每个 ClientNumber 的重复 OrderDate。
我希望输出看起来像这样:
array (
0 =>
array (
'OrderDate' => '02.11.2018',
'ClientNumber' => 5500
)
)
array (
0 =>
array (
'OrderDate' => '05.03.2018',
'ClientNumber' => 5500
)
)
array (
0 =>
array (
'OrderDate' => '10.12.2018',
'ClientNumber' => 2200
)
)
我应该使用什么 if 条件来使我的输出看起来像这样?任何帮助将不胜感激,谢谢!
这是我在 foreach 中调用的函数。我尽力检查 in_array 和 array_column 但输出看起来不像上面的代码。
$array = array();
function createArray($clientNr, $orderDate){
if(empty($array)){ // if array is empty, just add
$array[] = array(
"OrderDate"=>$orderDate,
"ClientNumber"=>$clientNr
);
} else {
if(??????)<--------------------------- // check here if date from clientnumber exists
$array[] = array(
"OrderDate"=>$orderDate,
"ClientNumber"=>$clientNr
);
}
}
}
解决方案
我做的!感谢您的方法,但这两个对我不起作用:
array_unique($array, SORT_REGULAR);
array_map("unserialize", array_unique(array_map("serialize", $array)));
这是我的解决方案,我添加了一个唯一键并检查该键是否已存在。
$id = date("Ymd", strtotime($orderDate)).$clientNr; // creates unique key
if(!array_key_exists($id, $array)){ // check if this key exists and add if not
$array[$id] = array(
"OrderDate"=>$orderDate,
"ClientNumber"=>$clientNr
);
}
推荐阅读
- javascript - 是否可以在 Javascript 中以编程方式更改词法范围?
- android - 如何从外部应用程序获取数据?
- python - 当我从另一个点再次调用它时,我的函数中的 Python 循环不再运行
- jquery - ajax xhr.getResponseHeader - http 错误响应中缺少自定义标头
- python - 在保留 Tk 对象时关闭 cmd
- r - 计算 R 中的总观察天数(lubridate + dplyr)
- spring - RestTemplate 与 WebClient 在基于 Servlet 的 web-mvc 应用程序中的优势
- python - FileNotFoundError: [Errno 2] 没有这样的文件或目录:'/root/.kube/config' 但文件存在
- python - 使用插值查找 2D 峰值的 x 和 y 全宽半最大值
- f# - F# 使用通用参数调用 .Net 函数 - 不会编译