Вот некоторые данные json:
[ {"a":"abc","b:":"10"},//"a":"abc" {"a":"abd","b:":"12"}, {"a":"abc","b:":"14"},//"a":"abc" {"a":"abe","b:":"15"}, {"a":"abf","b:":"16"}, {"a":"abg","b:":"17"},//"a":"abg" {"a":"abg","b:":"19"}//"a":"abg" ]
Я хочу удалить все повторяющиеся значения в дочернем узле «a» (оставайтесь первым из них).
Выход =>
[ {"a":"abc","b:":"10"},//first appear "a":"abc" {"a":"abd","b:":"12"}, {"a":"abe","b:":"15"}, {"a":"abf","b:":"16"}, {"a":"abg","b:":"17"}//first appear "a":"abg" ]
Это проверено и, похоже, работает так, как вы описали:
$json = <<<JSON [ {"a":"abc","b:":"10"}, {"a":"abd","b:":"12"}, {"a":"abc","b:":"14"}, {"a":"abe","b:":"15"}, {"a":"abf","b:":"16"}, {"a":"abg","b:":"17"}, {"a":"abg","b:":"19"} ] JSON; $json_array = json_decode( $json, TRUE ); $new_array = array(); $exists = array(); foreach( $json_array as $element ) { if( !in_array( $element['a'], $exists )) { $new_array[] = $element; $exists[] = $element['a']; } } print json_encode( $new_array );
Он выводит [{"a":"abc","b:":"10"},{"a":"abd","b:":"12"},{"a":"abe","b:":"15"},{"a":"abf","b:":"16"},{"a":"abg","b:":"17"}]
, которые Я считаю, что ваш желаемый результат.