есть массив в текстовом файле
ЭИ 893Л::493::726::23::93::1415::1360::
ЦНК 17П::717::850::7::31::1330::1242::
ЦНК 21П::625::836::7::16::1360::1261::
ЗМИ 3::785::905::5::21::1335::1220::
ЭИ 539ЛМ::730::856::5::21::1330::1250::
ЦНК 7П::880::970::8::28::1365::1279::
ЦНК 8МП::1020::1170::12::35::1374::1311::
ЖС 6К::910::1202::5::35::1335::1280::
тут он сортируется по 2-му элементу:
<?php
// функция сортировки
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) return 0;
if ( $a[price] < $b[price] ) return -1; return 1;}
// считываем данные из файла в массив уровней
$file = file ("file.dat");
// количество уровней
$lines = count ($file);
// запускаем цикл
for ($i=0; $i<$lines; $i++){
// раскладываем уровни на элементы
list ($a0, $a1, $a2,$a3, $a4, $a5, $a6) = explode ("::",$file[$i]);
// загоняем элементы в массив
// $a1 - предел
$array[$i] = array (price => $a1, name => array ($a0, $a1, $a2,$a3, $a4, $a5, $a6));
}
//сортируем массив
usort ($array, priceCmp);
//прогоняем отсортированный массив в цикле и выводим на печать
foreach ($array as $keys => $value){
foreach ($value as $key => $val){
// если не массив, то печатаем переход на новую строку
if (! is_array ($val)){ print "<br>\n"; continue;}
// если массив, то это уже отсортированные наши данные
foreach ($val as $v){
// печатаем данные
print $v." ";
}
}
}
?>
как сделать так, что бы этот уже отсортированный массив выводился в таблицу? например с такой шапкой: марка сплава, предел прочности, предел текучести и тд..
Спустя 6 минут, 22 секунды (24.10.2010 - 15:34) Michael написал(а):
Печатаешь перед циклом шапку:
там где строка начинается:
данные:
не забывай строку закрывать и после всего - всю таблицу
echo '<table><tr>тут твоя шапка</tr>';
там где строка начинается:
echo '<tr>';
данные:
foreach ($val as $v){
// печатаем данные
echo '<td>' .$v. '</td>';
}
не забывай строку закрывать и после всего - всю таблицу
Спустя 49 минут, 9 секунд (24.10.2010 - 16:23) Валерий Б. написал(а):
вбил шапку..вот фрагмент:
выводит первую строку из текстового файла под шапкой, а остальные строки за ней в строчку( не переводястся на новую строку)
как быть?
//сортируем массив
usort ($array, priceCmp);
echo '<table><tr><td>марка сплава</td><td>предел</td><td>предел прочности</td>
<td>расширение</td><td>вязкость</td><td>ликвидус</td><td>солидус</td>
</tr>';
//прогоняем отсортированный массив в цикле и выводим на печать
foreach ($array as $keys => $value){
foreach ($value as $key => $val){ ...
выводит первую строку из текстового файла под шапкой, а остальные строки за ней в строчку( не переводястся на новую строку)
как быть?
Спустя 5 минут, 24 секунды (24.10.2010 - 16:29) Michael написал(а):
Ну так ты код давай какой получился.
p.s. Пользуйся кнопками оформления кода.
p.s. Пользуйся кнопками оформления кода.
Спустя 2 минуты, 9 секунд (24.10.2010 - 16:31) Валерий Б. написал(а):
<?php
// функция сортировки
function priceCmp ( $a, $b ){
if ( $a[price] == $b[price] ) return 0;
if ( $a[price] < $b[price] ) return -1; return 1;}
// считываем данные из файла в массив уровней
$file = file ("file.dat");
// количество уровней
$lines = count ($file);
// запускаем цикл
for ($i=0; $i<$lines; $i++){
// раскладываем уровни на элементы
list ($a0, $a1, $a2,$a3, $a4, $a5, $a6) = explode ("::",$file[$i]);
// загоняем элементы в массив
// $a1 - предел
$array[$i] = array (price => $a1, name => array ($a0, $a1, $a2,$a3, $a4, $a5, $a6));
}
//сортируем массив
usort ($array, priceCmp);
echo '<table><tr><td>марка сплава</td><td>предел</td><td>предел прочности</td>
<td>расширение</td><td>вязкость</td><td>ликвидус</td><td>солидус</td></tr>';
//прогоняем отсортированный массив в цикле и выводим на печать
foreach ($array as $keys => $value){
foreach ($value as $key => $val){
// если не массив, то печатаем переход на новую строку
if (! is_array ($val)){ print "<br>\n"; continue;}
// если массив, то это уже отсортированные наши данные
foreach ($val as $v){
// печатаем данные
echo '<td>' .$v. '</td>';
}
}
}
?>
елси закрываю таблицу то все вообще в комке под шапкой, может не там..
p.s. я нуб)
Спустя 16 минут, 27 секунд (24.10.2010 - 16:47) Валерий Б. написал(а):
Спустя 47 минут, 38 секунд (24.10.2010 - 17:35) T1grOK написал(а):
у тебя нет тега создания новой строки в таблице, если не ошибаюсь должно быть вот так:
if (! is_array ($val)){ print "<br>\n"; continue;}
// если массив, то это уже отсортированные наши данные
echo '<tr>';
foreach ($val as $v){
// печатаем данные
echo '<td>' .$v. '</td>';
}
echo '</tr>';
Спустя 3 минуты, 31 секунда (24.10.2010 - 17:39) T1grOK написал(а):
Ах да, и в конце не забудь закрыть таблицу:
echo '</table>';
Спустя 7 минут, 15 секунд (24.10.2010 - 17:46) Валерий Б. написал(а):
все заработало, спасибо большое, только еще один вопрос
можно сделать чтоб столбцы были по центру а то они со смещение влево, не очень красиво
можно сделать чтоб столбцы были по центру а то они со смещение влево, не очень красиво
Спустя 1 час, 5 секунд (24.10.2010 - 18:46) T1grOK написал(а):
Вам бы не помешало основы html поучить.
foreach ($val as $v){
// печатаем данные
echo '<td align="center">' .$v. '</td>';
}
Спустя 5 минут, 54 секунды (24.10.2010 - 18:52) Валерий Б. написал(а):
спасибо! просто выручили меня
Спустя 3 часа, 37 минут, 30 секунд (24.10.2010 - 22:29) Валерий Б. написал(а):
нашел еще один вариант данной задачи, на мой взгляд попроще, проще в основном в самой сотрировке:
<?php
// функция сотрировки
function priceCMP ($a, $b) {return $a[2]- $b[2];}
// считываем данные из файла
$lines= file ("file.dat");
$array = array();
foreach($lines as $line) {
$array[]= explode('::', $line);
}
// сортируем массив
usort ($array, priceCmp);
echo '<TABLE border=2>';
echo '<TR>';
echo '<TD> Марка сплава</TD>';
echo '<TD> Предел текучести</TD>';
echo '<TD> Предел прочности</TD>';
echo '<TD> Относительное расширение</TD>';
echo '<TD> Удельная вязкость</TD>';
echo '<TD> Температура ликвидуса</TD>';
echo '<TD> Температура солидуса</TD>';
echo '</TR>';
foreach($array as $elem) {
echo '<TR align=center>';
foreach($elem as $field) echo '<TD>'.$field.'</TD>';
echo '</TR>';
}
echo '</TABLE>'
?>