我在php中有一个对象:
$object =
[
[
{"catalogo": "C400047", "rfc_inf_aval": "CIS981002NK4", },
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4",},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4",},
],
]它应该是这样的,我消除所有重复的rfc每个目录,重复的目录不应该被消除。
[
[
{"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4",},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6",},
{"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4",},
],
]我尝试过这样做,但是它删除了所有的rfc,并且我需要它只删除重复的rfc,而是按目录删除。
for ($i=0; $i < count($object); $i++) {
if(!in_array($object[$i]->rfc_inf_aval, $array1)){
array_push($array1, $object[$i]->rfc_inf_aval);
array_push($array2, $object[$i]);
}
} 发布于 2022-11-11 17:18:58
试试这个:
for ($i=0; $i < count($object); $i++) {
$k = $object[$i]->catalogo.'|'.$object[$i]->rfc_inf_aval;
$reduced[$k] = $object[$i];
}
$object = array_values($reduced);array_values中的重复,只需在结果数组中设置正常的数字索引.。
发布于 2022-11-11 17:36:57
首先,您的对象是无效的,因为它是一个JSON字符串,所以我使用它来定义它。
按照这个答案https://stackoverflow.com/a/25020035/1757214,我得到以下代码:
<?php
$js = <<<JSON
[[
{"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4"},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
{"catalogo": "C400047","rfc_inf_aval": "MZT8501014S6"},
{"catalogo": "C400047","rfc_inf_aval": "CIS981002NK4"},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
{"catalogo": "C140064","rfc_inf_aval": "MZT8501014S6"},
{"catalogo": "C140064","rfc_inf_aval": "CIS981002NK4"}
]]
JSON;
// Get the real object as an associative array
$data = json_decode($js, true);
// Use the first element, since is a nested array
$object = $data[0];
function my_array_unique($array, $keep_key_assoc = false){
$duplicate_keys = array();
$tmp = array();
foreach ($array as $key => $val){
// convert objects to arrays, in_array() does not support objects
if (is_object($val))
$val = (array)$val;
if (!in_array($val, $tmp))
$tmp[] = $val;
else
$duplicate_keys[] = $key;
}
foreach ($duplicate_keys as $key)
unset($array[$key]);
return $keep_key_assoc ? $array : array_values($array);
}
var_dump(my_array_unique($object));你会得到:
array(4) {
[0]=>
array(2) {
["catalogo"]=>
string(7) "C400047"
["rfc_inf_aval"]=>
string(12) "CIS981002NK4"
}
[1]=>
array(2) {
["catalogo"]=>
string(7) "C140064"
["rfc_inf_aval"]=>
string(12) "MZT8501014S6"
}
[2]=>
array(2) {
["catalogo"]=>
string(7) "C400047"
["rfc_inf_aval"]=>
string(12) "MZT8501014S6"
}
[3]=>
array(2) {
["catalogo"]=>
string(7) "C140064"
["rfc_inf_aval"]=>
string(12) "CIS981002NK4"
}
}https://stackoverflow.com/questions/74405847
复制相似问题