| |
|
|
| | Здравствуйте!
имеется страница вывода файлов. файлы сортируются по содержащимся в них строчкам.
А именно: строчки № 4
$name = $_GET[file];
$file = file("../file/users/".$name);
$users = array();
foreach ($file as $f)
{
list ($u['author'], $u['namesong'], $u['songlenth'], $u['rate'], $u['nameorigine']) = explode ('|', trim($f));
$users[] = $u;
}
|
таким макаром определяется для редактирования определенный файл, а как сделать сортировку файлов по полю $u['rate'] | |
| |
|
|
|
| |
|
|
| |
для: Temnovit
(30.11.2007 в 15:35)
| | | не получается, потому прошу помощи | |
| |
|
|
| |
|
|
| |
для: ronin
(30.11.2007 в 16:07)
| | | Есть такой вариант - переделываем полученный массив еще в 2 массива:
1 массив - где ключи 0,1,2,3... и т.д. и у каждого ключа как параметры массив с соответствующей частью первоначального массива
2 массив - где ключи 0,1,2,3... и т.д. и как данные для каждого ключа - необходимое вам поле таким образом, что бы было соответствие массивов (1 и 2) по ключам
Далее сортируем второй массив с сохранением ключей и далее проходя по этому массиву объединяем снова 2 массива, выводим их на экран или что там с ними нужно сделать. | |
| |
|
|
| |
|
|
| |
для: Zirkon
(30.11.2007 в 16:19)
| | | этот принцип не работает,но мне кажется я где то близко :)
$blin = "../file/users/".$file ;
$users = array(
$blin => array ($u['author'], $u['namesong'], $u['songlenth'], $u['rate'], $u['nameorigine'])) ;
$users[] = $u;
function s_cmp($a, $b)
{
$n = 4; // № строчки
$ra = explode('|', $a);
$rb = explode('|', $b);
if($ra[$n]==$rb[$n]) return 0;
return $ra[$n]>$rb[$n] ? 1 : -1;
}
ksort($users, s_cmp);
|
| |
| |
|
|
| |
|
|
| |
для: ronin
(30.11.2007 в 16:51)
| | | Работает, делал когда-то такое :) Просто нужно внимательно все сделать :)
Еще раз тогда покажу что есть и что требуется сделать :)
есть:
array(
0 => array (
'key1' => 'value1',
'key2' => 2,
'key3' => 'value3'
),
1 => array (
'key1' => 'value4',
'key2' => 8,
'key3' => 'value6'
),
2 => array (
'key1' => 'value7',
'key2' => 5,
'key3' => 'value9'
)
)
|
в принципе этот оставляем как есть и делаем сразу второй массив (из первого, соответствующий первому) и как значение используем то поле, по которому необходимо сделать сортировку:
array(
0 => 2,
1 => 8,
2 => 5
)
|
сортируем этот второй массив по значениям с сохранением ключей, получаем что-то типа:
array(
1 => 8,
2 => 5,
0 => 2
)
|
Далее проходим в цикле по этому массиву, и по его ключу определяем какой ключ первоначального массива в данный момент использовать. Так уже более понятно? :) | |
| |
|
|
| |
|
|
| |
для: Zirkon
(30.11.2007 в 16:52)
| | | если можно, более подробно, для особо одаренных | |
| |
|
|
| |
|
|
| |
для: ronin
(30.11.2007 в 18:27)
| | | я уже перекопал весь форум, но решения не нашел, прошу помощи!!! | |
| |
|
|
| |
|
|
| |
для: ronin
(01.12.2007 в 13:26)
| | |
<?
function compare($a, $b) {
return strcmp($a["as1"], $b["as1"]); //выбираем нужный ключ для сортировки
}
$a = array(array('as1'=>13,'as2'=>25,'as3'=>5),
array('as1'=>11,'as2'=>20,'as3'=>2),
array('as1'=>10,'as2'=>22,'as3'=>3));
usort($a, "compare");
print_r($a);
?>
|
Так надо? | |
| |
|
|
| |
|
|
| |
для: sim5
(01.12.2007 в 14:08)
| | | честно говоря - не понял | |
| |
|
|
| |
|
|
| |
для: ronin
(03.12.2007 в 15:57)
| | | Честно говоря и я тоже - как сделать сортировку файлов по полю $u['rate']. Надо понимать сортировку в естественном порядке, от меньшего к большему, тогда Temnovit вам правильно указал на функцию, что же вам надо, если и это не то? Вот я и подумал, что вы не поняли и прописал пример. Собственно в этом примере массив $a будет отсортирован в порядке возрастания, по выбранному ключу. Возьмите свой массив, и укажите в ползовательской функции ключ $u['rate'] - а вдруг это вам надо. | |
| |
|
|
| |
|
|
| |
для: sim5
(03.12.2007 в 16:33)
| | | я не могу сделать двухмерный массив: состоящий из файлов и содержимового. При этом на странице должны воводиться строчки файлов, отсортированных по "полю" №4 array[3] Т.е. проблема не в сортировке, а в создании двухмерного массива(башка не работает - reset(пиво) - не помогает) | |
| |
|
|
| |
|
|
| |
для: ronin
(03.12.2007 в 17:02)
| | | А чего тогда вопрос так ставите? ;-) | |
| |
|
|
| |
|
|
| |
для: ronin
(03.12.2007 в 17:02)
| | | Ну даешь - как это не можешь создать двумерный массив. Тебе ведь по полочкам разложили | |
| |
|
|
| |
|
|
| |
для: ronin
(03.12.2007 в 17:02)
| | | Так и не понял, чего вы хотите. Ну во-первых, результат list - это все "задом на перед", и чтобы ориентироваться на №4, нужно:
$users[] = array_reverse($u, true);
Во-вторых, что в полученном массиве, некий ключ его содержит текст, который также надо разбить на массив? Что значит - массив: состоящий из файлов и содержимового? | |
| |
|
|
| |
|
|
| |
для: sim5
(04.12.2007 в 07:20)
| | | существуют файлы, где находяться записи, состоящие из пяти строчек, разделенные |
имеется страница вывода данных из всех файлов папки, данные сортируются по "полю" №4(interger), при этом это "поле" неуникально. | |
| |
|
|
| |
|
|
| |
для: ronin
(04.12.2007 в 10:32)
| | | Ну и в чем проблема? | |
| |
|
|
| |
|
|
| |
для: sim5
(04.12.2007 в 10:42)
| | | я понимаю, что смешно: но я не могу все эти записи вывести на одной строанице. ведь идет обращение к нескольким файлом одновременно. | |
| |
|
|
| |
|
|
| |
для: ronin
(04.12.2007 в 11:44)
| | | Ни че не понимаю.) Из вашего кода - вы берете файл, разбиваете его строки на массив. Значения этого массива и надо вывести, или получить все файлы, разбить их строки на массив объденяя эти массивы в один, а потом все вывести? Как понять к нескольким файлам одновременно? | |
| |
|
|
| |
|
|
| |
для: sim5
(04.12.2007 в 12:12)
| | | Ничего не понял что он хочет... уже по полочкам выше описал как это сделать - причем такой вариант ранее проверял - работает. Осталось только это все ручками в ПХП прописать... если уже и это трудно... тогда не знаю что и сказать. | |
| |
|
|