【发布时间】:2019-04-04 10:26:57
【问题描述】:
我正在尝试根据客户端 ID 从二维数组中删除重复项。该脚本会删除除第一个值、第一个客户端之外的所有重复项。
我尝试了其他几种方法将 array_search 的结果与不同的值进行比较,尝试使用 !== 和 === 却没有得到有希望的结果。
将非数值作为数组的第一个插入,可以完美地消除重复数据。
代码如下:
// Build client list
$ClientList = array();
$counter = 0;
foreach ($ClientTrans as $order => $value) {
$ClientId = $ClientTrans[$order]['customer_id'];
if (array_search($ClientId, array_column($ClientList, 0)) == FALSE && is_numeric($ClientId)) {
$ClientList[$counter][] = $ClientId;
$counter += 1;
}
}
最终结果是一个客户端和一个二维数组的求和值。除了第一个客户端,它在新的构建客户端列表中多次出现,没有重复。
这是输入数组
Array (
[0] => Array (
[customer_id] => 50245901
[points] => 299
)
[1] => Array (
[customer_id] => 50245907
[points] => 3847
)
[2] => Array (
[customer_id] => 50245908
[points] => 159
)
[3] => Array (
[customer_id] => 50245910
[points] => 3175
)
[4] => Array (
[customer_id] => 50245914
[points] => 641
)
[5] => Array (
[customer_id] => 50245916
[points] => 449
)
[6] => Array (
[customer_id] => 50245921
[points] => 551
)
[7] => Array (
[customer_id] => 50245927
[points] => 0
)
[8] => Array (
[customer_id] => 50245928
[points] => 602
)
[9] => Array (
[customer_id] => 50245929
[points] => 495
)
[10] => Array (
[customer_id] => 50245931
[points] => 539
)
[11] => Array (
[customer_id] => 50245941
[points] => 0
)
[12] => Array (
[customer_id] => 50245901
[points] => 124
)
[13] => Array (
[customer_id] => 50245901
[points] => 512
)
)
所需的输出 - 客户 ID 50245901 没有多次出现:
Array (
[0] => Array (
[customer_id] => 50245901
)
[1] => Array (
[customer_id] => 50245907
)
[2] => Array (
[customer_id] => 50245908
)
[3] => Array (
[customer_id] => 50245910
)
[4] => Array (
[customer_id] => 50245914
)
[5] => Array (
[customer_id] => 50245916
)
[6] => Array (
[customer_id] => 50245921
)
[7] => Array (
[customer_id] => 50245927
)
[8] => Array (
[customer_id] => 50245928
)
[9] => Array (
[customer_id] => 50245929
)
[10] => Array (
[customer_id] => 50245931
)
)
【问题讨论】:
-
你能展示一下你的输入数组是什么样子的吗?预期的结果应该是什么?
-
请发布输入数组值以及您最终想要的预期结果
-
你好。我已将数组值示例和结果添加到问题中。
-
我看到了两种有趣但不同的解决方法,但有没有人知道为什么会发生这种情况,第一个数组的值不断增加自己?是不是因为 False == 0 并且它在数组中的位置是 0?
标签: php arrays multidimensional-array array-column