ОБНОВИТЬ
I found an answer to this question for myself and I posted it, but i can only accept it in two days..
Я создаю этот многомерный массив:
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
)
)
Массив не должен содержать повторяющихся значений OrderDate от каждого ClientNumber.
Я хочу, чтобы результат выглядел так:
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
);
}
}
}






Вы можете попробовать это: -
$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);
если номер клиента другой, то запись из массива не удаляется. если номер и дата клиента совпадают, тогда значение массива будет уникальным, пожалуйста, проверьте мой, например.
@ashishkumar Объясните свой ответ. Будет полезно OP
yash sir, если запустить приведенный выше пример, вы можете получить только одно значение в массиве. но если вы измените дату заказа или номер клиента, вы можете получить две записи
У меня не сработало: /
это беспокоит меня. пожалуйста, поделитесь своим кодом
Попробуйте, как показано ниже, вы можете использовать функцию 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);
У меня не сработало: /
Я сделал это! Спасибо за ваши подходы, но эти двое у меня не сработали:
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
);
}
Но и у других clientNumber может быть такая же OrderDate.