更新
我为自己找到了这个问题的答案,并将其发布了,但是我只能在两天内接受。
我创建了这个多维数组:
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
);
}
}
}
答案 0 :(得分:0)
您可以尝试以下方法:-
$data=array();
$data[0]['OrderDate']='02.11.2018';
$data[0]['ClientNumber']='5500';
$data[1]['OrderDate']='02.11.2018';
$data[1]['ClientNumber']='5500';
$new_arr = array_unique($data, SORT_REGULAR);
答案 1 :(得分:0)
尝试以下方法,可以使用array_map或array_unique()函数
$array = array(
array(
'OrderDate' => '02.11.2018',
'ClientNumber' => 5500
),
array(
'OrderDate' => '02.11.2018',
'ClientNumber' => 5500
),
array(
'OrderDate' => '05.03.2018',
'ClientNumber' => 5500
),
array(
'OrderDate' => '10.12.2018',
'ClientNumber' => 2200
),
array(
'OrderDate' => '10.12.2018',
'ClientNumber' => 2200
)
);
$newArr = array_map("unserialize", array_unique(array_map("serialize", $array)));
print_r($newArr);
$newArr1 = array_unique($array, SORT_REGULAR);
print_r($newArr1);
答案 2 :(得分:0)
我做到了!感谢您的方法,但是 这两个对我不起作用:
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
);
}