[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка - или перестановка значений в массиве
phpinfo
Вообщем к примеру
Есть массив

$new=array("1","2","3");

0>1
1 > 2
2 >3

Как мне его отсортировать так, что бы он выглядел вот так

$new=array("2","3","1");

0 > 2
1 > 3
2 > 1

Ума не приложу если это конечно возможно ...сделать с помощью какой нибудь функции сортировки...
twin
Тут внизу глянь последнюю функцию.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
glock18
ну вообще по виду это array_unshift + array_push, а не "переставить первый элемент и второй"
phpinfo
Del
phpinfo
Цитата (glock18 @ 17.12.2013 - 20:36)
ну вообще по виду это array_unshift + array_push, а не "переставить первый элемент и второй"

Спасибо

Я решил это так

for($i = 0; $i <= $arr_total; $i += 3) {


$array= arrayChange($array, 0, $i);


}


function arrayChange($a, $v1, $v2)
{
list($a[$v2], $a[$v1]) = array($a[$v1], $a[$v2]);
return $a;
}

Ну пока вроде работает как надо - еще досканарно не проверял, а то я вечно радуюсь что получилось потом за дело, а оно не так как надо ))

Но это надеюсь будет работать, а то я с массивами и циклами и вообще такая там катавася что у меня уже голова болит думать что да как вроде элементарные вещи а как сделать так да да... на форум бегу. smile.gif

Но если есть решение проще не откажусь и от него - щас поробую посмотреть что это

array_unshift + array_push


Вообщем глянул


<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
?>

В результате массив $queue будет содержать следующие элементы:
Array
(
[0] => apple
[1] => raspberry
[2] => orange
[3] => banana
)


Мне кажеться не получиться сделать так с этой функцией


$arr1=array("a1","a2","a3","b1","b2","b3&quo t;,"c1",c2","c3");

Менять на

$arr1=array("a2","a3","a1","b2","b3","b1&quo t;,"c2",c3","c1");
sergeiss
Сделай "пользовательскую сортировку": функция usort() совместно с "правильной" call-back функцией. Это будет более правильно, мне кажется.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
phpinfo
Цитата (sergeiss @ 17.12.2013 - 21:11)
Сделай "пользовательскую сортировку": функция usort() совместно с "правильной" call-back функцией. Это будет более правильно, мне кажется.

Я сней сегодня так намучался.. что капец, я просто не знаю слишком пхп а тем более работу с массивами но пол дня убил что бы посмотреть что да как работает методом тыков догадок построил кое что похожее..

А вот как я не крутил этот USORT как мне нужно было он не хотел менять... то ли я не знал как это сделать, он переставлял как хочеш и даже бинарное что то там сранение применял тоже не катило... (а вот если бы было только два элемента то да) но как вы поставить USORT функцией к примеру второй елемент на 1 место ?

к примеру

$arr=("1","2","3");

сделать


$arr=("2","3","1");
sergeiss
usort как работает? Он использует пользовательскую функцию для сравнения.

http://www.php.net/manual/ru/function.usort.php

"Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим чем второй."

Ну так и возвращай нужные значения для определенных пар величин smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
phpinfo
Не знаю, у меня не получалось я там все перепробовал, три строки, и я не как не мог добиться что бы было вот так

$arr=("1","2","3");

сделать


$arr=("2","3","1");
sergeiss
Нунизнай.... У меня всё получилось :) Хотя цель данных преобразований для меня так пока и осталась загадкой.

$a = array( 1, 2, 3);

usort( $a, srt );

echo '<pre>'.print_r($a, 1).'</pre>';

function srt( $a, $b )
{
if( $a == 2 and $b == 3 )
return -1;
else if( $a == 3 and $b == 2)
return 1;
else if( $a > $b )
return -1;
else if( $a < $b )
return 1;
else
return
0;
}


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
phpinfo
Цитата (sergeiss @ 18.12.2013 - 01:01)
Нунизнай.... У меня всё получилось :) Хотя цель данных преобразований для меня так пока и осталась загадкой.

$a = array( 1, 2, 3);

usort( $a, srt );

echo '<pre>'.print_r($a, 1).'</pre>';

function srt( $a, $b )
{
if( $a == 2 and $b == 3 )
  return -1;
else if( $a == 3 and $b == 2)
  return 1;
else if( $a > $b )
  return -1;
else if( $a < $b )
  return 1;
else
  return
0;
}

К примеру, если есть массив со списком, а список выводиться не в том порядке как мне нужно, к примеру в массиве есть 3 значение, мне нужно что бы значение 2 было стало 1 а 1 был 3 ну вообщем в таком духе, просто обычные сортировки не всегда помогают расставить их так как нужно особенно если значение идет вторым ! тогда реверсы не помогают..


п.с Кстати хороший форум, нравиться что живой и людям инетересно и помогают тоже :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.