есть массив примерно такого содержания
2223
4423
2345
4423
нужно найти одинаковые значения и ко второму прибавить 1
пробовал через вложенные циклы но там к обоим прибавлялось и они снова были одинаковыми
нужно сделать их разными
PHP
помогите с php не получается функция
$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 проходом думаю хватит) хотя не уверен он так может до бесконечности их прибовлять нужно какоето условие.))
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 проходом думаю хватит) хотя не уверен он так может до бесконечности их прибовлять нужно какоето условие.))
$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);
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 ++
$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 ++
Похожие вопросы
- Помогите с php кодом, плиз) хотел функцию транслитерации написать, только ошибка выходит и все :(
- Помогите с PHP кодом! Где косяк?
- Почему в качестве колбеков в PHP передаются методы (функции), а не объекты?
- Помогите с PHP.
- Для чего нужны функции pack () и unpack () в PHP ?
- Задачка по PHP (Создание функции)
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- Есть ли какой-нибудь тайм аут на работу времени функции в php?
- В чём смысл функции chop в php?
- PHP Polling ChatGPT