我有一個多維陣列,需要洗掉具有相同鍵值的條目。
例如。
Array
(
[0] => stdClass Object
(
[id] => 1177930857
[lat] => 24.479280471802
[lon] => 46.973030090332
[status] => completed
[status_desc] => Order Completed
[date] => 2022-01-05T14:38:53.433Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[1] => stdClass Object
(
[id] => 1177930856
[status] => first_delivery_attempt
[status_desc] => First delivery attempt
[date] => 2022-01-05T14:38:53.429Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[2] => stdClass Object
(
[id] => 1177930566
[lat] => 24.479286193848
[lon] => 46.973037719727
[status] => picked_up
[status_desc] => Picked Up
[date] => 2022-01-05T14:38:09.673Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[3] => stdClass Object
(
[id] => 1177930563
[status] => third_pickup_attempt
[status_desc] => Third pickup attempt
[date] => 2022-01-05T14:38:09.663Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[4] => stdClass Object
(
[id] => 1177930281
[lat] => 24.479211807251
[lon] => 46.973079681396
[status] => on_his_way
[status_desc] => On his way
[date] => 2022-01-05T14:37:23.809Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[5] => stdClass Object
(
[id] => 1177929996
[lat] => 24.479232788086
[lon] => 46.973007202148
[status] => accepted
[status_desc] => Accept
[date] => 2022-01-05T14:36:50.781Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[6] => stdClass Object
(
[id] => 1177906778
[lat] => 24.479225158691
[lon] => 46.97301864624
[status] => picked_up
[status_desc] => Picked Up
[date] => 2022-01-05T14:14:07.153Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[7] => stdClass Object
(
[id] => 1177906776
[status] => second_pickup_attempt
[status_desc] => Second pickup attempt
[date] => 2022-01-05T14:14:07.143Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[8] => stdClass Object
(
[id] => 1177899225
[lat] => 24.479236602783
[lon] => 46.973030090332
[status] => on_his_way
[status_desc] => On his way
[date] => 2022-01-05T14:11:15.398Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[9] => stdClass Object
(
[id] => 1177897941
[lat] => 24.479259490967
[lon] => 46.973037719727
[status] => accepted
[status_desc] => Accept
[date] => 2022-01-05T14:10:18.301Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[10] => stdClass Object
(
[id] => 1175904301
[lat] => 24.479475021362
[lon] => 46.973045349121
[status] => picked_up
[status_desc] => Picked Up
[date] => 2022-01-03T15:01:23.370Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[11] => stdClass Object
(
[id] => 1175904299
[status] => first_pickup_attempt
[status_desc] => First pickup attempt
[date] => 2022-01-03T15:01:23.360Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[12] => stdClass Object
(
[id] => 1175903039
[lat] => 24.479200363159
[lon] => 46.973037719727
[status] => on_his_way
[status_desc] => On his way
[date] => 2022-01-03T15:00:54.959Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
[13] => stdClass Object
(
[id] => 1175446498
[status] => accepted
[status_desc] => Accept
[date] => 2022-01-03T06:30:00.000Z
[driver] => stdClass Object
(
[id] => 1175437372
[name] => xxxxxx
[login] => [email protected]
[email] => [email protected]
[status] => active
)
)
)
在這個陣列中,有一個欄位status,我只需要保留一個具有相同狀態的條目,這意味著我picked_up只需要一次狀態。我期待結果陣列中具有指定狀態的最后一個條目。我需要對所有狀態應用相同的邏輯,例如。on_his_way等accepted。
uj5u.com熱心網友回復:
如果您只需要每個唯一狀態的最新條目,您可以簡單地使用status' 值作為另一個關聯陣列中的鍵,并在回圈中的每次迭代中繼續覆寫它。最后,您只會得到最新條目的獨特結果。
比如說,你在一個名為 的變數中有這個陣列$data,那么你可以像下面這樣回圈:
<?php
$set = [];
foreach($data as $o){
$set[ $o->status ] = $o;
}
$set = array_values($set);// if you don't like status keys
print_r($set);
uj5u.com熱心網友回復:
$input = array_map("unserialize" , array_unique(array_map("serialize", $input)));
array_map - 將回呼應用于給定陣列的元素
序列化 - 生成值的可存盤表示
unserialize - 從存盤的表示創建一個 PHP 值
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489848.html
下一篇:為什么ifft2影像分成4?
