[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите
Валерий Б.
Всем привет. столкнулся с такой проблеммой( сам в пхп шарю не очень поэтому обращаюсь к вам):
есть массив в текстовом файле

ЭИ 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. Пользуйся кнопками оформления кода.

Спустя 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) Валерий Б. написал(а):
user posted image

Спустя 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) Валерий Б. написал(а):
все заработало, спасибо большое, только еще один вопрос
user posted image
можно сделать чтоб столбцы были по центру а то они со смещение влево, не очень красиво huh.gif

Спустя 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>'

?>
Быстрый ответ:

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