PHP. Перестановка элементов массива

196
06 декабря 2021, 18:10

Есть массив $X = [0,-5,-9,3,76,-99,-3,-4,101,-212,10,31]; Надо переставить отрицательные элементы из в начало массива, а положительные в конец, сохранив при этом их очередность, то есть :[-5,-9,-99,-3,-4,-212,0,3,76,101,10,31].

Answer 1
$x = [0,-5,-9,3,76,-99,-3,-4,101,-212,10,31];
foreach ($x as $k => $i) {
    if ($i < 0) {
        $y[] = $i;
        unset($x[$k]);
    }
}
print_r(array_merge($y, $x));

$x = [0,-5,-9,3,76,-99,-3,-4,101,-212,10,31];
foreach ($x as $k => $i) {
    if ($i >= 0) {
        array_push($x, $x[$k]);
        unset($x[$k]);
    }
}
print_r($x);
Answer 2

Воспользуйтесь функцией usort.

usort($x, function(int $a, int $b){
    if($a < 0){
        return -1;
    }
    if($b < 0){
        return 1;
    }
    return 0;
});
Answer 3

заведите два массива, один для отрицательных другой для положительных. Пройдитесь циклом по данному и распихайте значения в эти два. а затем слейте в один в нужном порядке. что-то вроде такого

$p = []; $n = [];
foreach($values as $v){
   $v >= 0 ? $p[] = $v: $n[] = $v;
}
$result  = array_merge($n, $p);
READ ALSO
Помощь в структуре базы данных mysqli

Помощь в структуре базы данных mysqli

нуждаюсь в совете либо в примере, как реализовать структуру бд, дл выполнения задачи

244
Как реализовать промокод с помощью PHP?

Как реализовать промокод с помощью PHP?

В корзине есть специальное поле(input например), в который если ввести необходимое значение - цена(вводимая js'ом) покупки должна уменьшиться

203
Не читаются строки в Excel2007.php Строка 951, код: $value = $sharedStrings[intval($c-&gt;v)];

Не читаются строки в Excel2007.php Строка 951, код: $value = $sharedStrings[intval($c->v)];

При прогоне xlsx файла через PHPExcel выдает ошибки типа:

310
Статистика посещаемости на сайте

Статистика посещаемости на сайте

Задумка ввести свою статистику посещаемости на сайте

277