PHP

помогите с php не получается функция

есть массив примерно такого содержания
2223
4423
2345
4423
нужно найти одинаковые значения и ко второму прибавить 1
пробовал через вложенные циклы но там к обоим прибавлялось и они снова были одинаковыми
нужно сделать их разными
$array = array("1", "2","2", 5", "3" "2", 5",4);
flag=False;x=0;
do {
//условие выхода
if (x==9){Flag=True;}
for ($i=0; $i<9; $i++){
if ($array[$i]==$array[$i-1]){$array[$i-1]=$array[$i-1]+1;}
}
x++;
} while ($flag);
что то типа такого)) я не силен в школьных задачках 9 переменных 9 проходом думаю хватит) хотя не уверен он так может до бесконечности их прибовлять нужно какоето условие.))
Adilhan Aimaganbet
Adilhan Aimaganbet
2 479
Лучший ответ
$arr = [2223, 4423, 2345, 4423, 4424];
do {
 $rep_count = 0;
 for ($i = 0; $i < count($arr); $i++) {
  $idx = array_search($arr[$i], $arr);
  if ($idx !== false && $idx < $i) {
   $arr[$i]++;
   $rep_count++;
  }
 }
} while ($rep_count);
https://www.tehplayground.com/3STSmR26MIkoNyFx

$arr = [ 2223, 4423, 2345, 4423, 4424 ];

incrementNonuniqueArrayValues( $arr );

function incrementNonuniqueArrayValues( &$arr ) {
// комментарии для первой итерации
while ( count( $arr ) !== count( array_unique( $arr ) ) ) {
$countVal = array_count_values( $arr ); // [2223]=>1, [4423]=>2, ..
$nonUniqVK = array_diff( $countVal, [ 1 ] ); // [4423]=>2
$nonUniqVal = array_keys( $nonUniqVK ); // 4423
foreach ( $nonUniqVal as $val ) {
$nonUniqKeys = array_keys( $arr, $val ); // [1,3]
$nonUniqKey = $nonUniqKeys[1]; // 3
++$arr[$nonUniqKey]; // 4424
}
}
}

var_dump( $arr );
//array (size=5)
// 0 => int 2223
// 1 => int 4423
// 2 => int 2345
// 3 => int 4424 ++
// 4 => int 4425 ++
Алексей Жуков
Алексей Жуков
6 545