HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 09.12.2008, 03:49
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
По умолчанию

Есть двумерный массив вида
1 a d
2 b c
3 c b
4 d a
Хочу устроить сортировку как по столбцам.
Т.е. сортируем по первому нулевому столбику (столбцы пронумерованы допустим от 0 до 3) в обратном порядке, получаем
4 d a
3 c b
2 b c
1 a d
Т.е. СТРОКИ таблицы неразбились
Далее то что получилось сортируем допустим по первому столбику по порядку получим
1 a d
2 b c
3 c b
4 d a
Ну и можем сортировать так по любому столбику туда сюда.
КАК сделать такую сортировку массива на PHP?
Почитал array_multisort - не то... или неверно почитал
 
Ответить с цитированием

  #2  
Старый 09.12.2008, 04:31
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


По умолчанию

2 Red_Red1:

примерно так:

PHP код:
<?
/* 
Есть двумерный массив вида 
1 a d 
2 b c 
3 c b 
4 d a 
Хочу устроить сортировку как по столбцам. 
Т.е. сортируем по первому нулевому столбику (столбцы пронумерованы допустим от 0 до 3) в обратном порядке, получаем 
4 d a 
3 c b 
2 b c 
1 a d 
Т.е. СТРОКИ таблицы неразбились 
Далее то что получилось сортируем допустим по первому столбику по порядку получим 
1 a d 
2 b c 
3 c b 
4 d a 
Ну и можем сортировать так по любому столбику туда сюда. 
КАК сделать такую сортировку массива на PHP? 
*/ 

$str "a d b c c b d a"
preg_match_all('/([a-z])/s'$str$result); 
$count count($result[0]); 
for (
$i=0;$i<$count;$i++) 
{
echo 
$result[0][$i].$result[0][$i+1]."\r\n"
$i++;
}
echo 
"\r\n"
$count1 count($result[0])-2
for (
$i=0;$i<=$count1;$i++) 
{  
$result[1][$i] = $result[0][$i+1]; 
$result[1][$i+1] = $result[0][$i]; 
$i++; 

for (
$i=0;$i<$count;$i++) 
{
echo 
$result[1][$i].$result[1][$i+1]."\r\n"
$i++;
}
echo 
"\r\n"
for (
$i=0;$i<=$count1;$i++) 
{  
$result[1][$i] = $result[0][$i]; 
$result[1][$i+1] = $result[0][$i+1]; 
$i++; 

for (
$i=0;$i<$count;$i++) 
{
echo 
$result[1][$i].$result[1][$i+1]."\r\n"
$i++;
}

Последний раз редактировалось Pashkela; 09.12.2008 в 05:06..
 
Ответить с цитированием

  #3  
Старый 09.12.2008, 04:37
Oozy
Banned
Регистрация: 08.12.2008
Сообщений: 3
Провел на форуме:
21188

Репутация: 1
По умолчанию

Pashkela зачем изобретать велосипед
Red_Red1 юзай array_reverse()
 
Ответить с цитированием

  #4  
Старый 09.12.2008, 04:52
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


По умолчанию

Мне нравится изобретать велосипеды, т.к. по образованию не программер. Каждый вопрос - ребус.
Главное - результат

Последний раз редактировалось Pashkela; 09.12.2008 в 05:12..
 
Ответить с цитированием

  #5  
Старый 09.12.2008, 09:56
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
По умолчанию

2 Pashkela
Спасибо конечно за попытку.
Но дело в том что мне нужна СОРТИРОВКА МАССИВА.
Может это некая функция должна быть на вход которой подаем массив, столбик по которому сортируем, направление. На выходе отсортированый массив.

Может так будет понятнее
Имеем массив полных имен Фамилия Имя Отчество

Фамилия Имя Отчество

1 Иванов Николай Петрович

2 Сидоров Андрей Алексеевич

3 Егоров Плюс Плюсович

4 Петров Тарас Сергеевич

Нужна сортировка по столбикам, т.е. по фамилии, имени или отчеству. При это ясно что "человек должен остатся" Т.е. Если сортируем по имени то НЕ должно получится Иванов АНДРЕЙ Петрович
...
Видимо нету такой функции в ПХП... придется писать что то подобное.

Последний раз редактировалось Red_Red1; 09.12.2008 в 10:41..
 
Ответить с цитированием

  #6  
Старый 09.12.2008, 11:22
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Red_Red1, usort();

Хотя это скорее задача БД.
 
Ответить с цитированием

  #7  
Старый 09.12.2008, 12:55
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


По умолчанию

2 Red_Red1:

Да принцип тот же самый, только лучше тогда, чтобы массив, если речь идет просто о тексте в текстовом файле, был такой:

1 Иванов Николай Петрович;

2 Сидоров Андрей Алексеевич;

3 Егоров Плюс Плюсович;

4 Петров Тарас Сергеевич;

Делаем 1-ый эксплоуд через ";" а потом каждый элемент получившегося массива эксплодим через "цифра_пробел" и смотрим первую букву второго элемента нового массива. А дальше просто и алгоритм примерно такой же. Если надо - могу сделать
 
Ответить с цитированием

  #8  
Старый 09.12.2008, 13:32
Red_Red1
Участник форума
Регистрация: 12.01.2007
Сообщений: 262
Провел на форуме:
4608122

Репутация: 874
По умолчанию

Причем тут файлы?! О.о Я ведь про файлы ниче не писал. Есть уже готовый массив.
$arr[1]['Familiya'] = 'Иванов'
$arr[1]['Imya'] = 'Николай'
$arr[1]['Otchestvo'] = 'Петрович'
и т.д.
Я просто "нарисовал" его в виде таблицы, так удобнее.
 
Ответить с цитированием

  #9  
Старый 09.12.2008, 14:56
.:nbd:.
Познающий
Регистрация: 27.07.2008
Сообщений: 98
Провел на форуме:
405792

Репутация: 86
По умолчанию

ИМХО только через БД, остальное костыли.
 
Ответить с цитированием

  #10  
Старый 09.12.2008, 15:02
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Red_Red1 пример каг бе из мануала. Захочется в обратном порядке сортировать - сделаете вместо одной функции - класс. Пример так же тут: http://ru2.php.net/manual/ru/function.usort.php

PHP код:
function cmp($a$b
{
    return 
strcmp($a["Familiya"], $b["Familiya"]);
}

$arr[1]['Familiya'] = 'Петров';
$arr[1]['Imya'] = 'Николай';
$arr[1]['Otchestvo'] = 'Петрович';

$arr[2]['Familiya'] = 'Иванов';
$arr[2]['Imya'] = 'Сергей';
$arr[2]['Otchestvo'] = 'Павлович';

$arr[3]['Familiya'] = 'Сидоров';
$arr[3]['Imya'] = 'Максим';
$arr[3]['Otchestvo'] = 'Викторович';

usort($arr"cmp");

foreach(
$arr as $key => $value)
 {
    echo 
"\$arr[$key]: " $value['Familiya'].":".$value['Imya'].":".$value['Otchestvo']. "
"

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 6 (пользователей: 0 , гостей: 6)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.