Файл содержит информацию об автомобилях в виде: номерной знак, марка авто, модель, год выпуска, стоимость, пробег, фамилия и имя владельца.
Файл:
CE1367AB BMW 5Series $50000 2009р. 15000тис Робуляк Дмитро
CE4654AА Chery Amulet $1000 2008р. 8000тис Ревуцький Дмитро
CE6522AМ Lada 2106 $4000 2004р. 15000тис Кравецький Степан
CE4356ЕА Opel Kadett $3000 1980р. 200000тис Филипчук Саша
CE2034АВ Lada 2105 $2000 1992p. 92000тис Драганюк Вадим
1) Вывести все автомобили упорядочены по возрастанию стоимости и вычислить количество различных марок автомобилей, встречающихся в файле.
2) В форму вводится набор символов. Вывести в окно браузера все автомобили, фамилии владельцев которых содержат заданные символы.
Помогите советом, или кодом)))
Спустя 1 час, 18 минут, 46 секунд (2.04.2011 - 16:49) Вадим написал(а):
первое задание надо выполнить используя массивы, второе используя строки!
Вопрос в том, как разбить этот файл в массив элементов, чтобы потом можно было обратиться к элементу "стоимость" и сравнить с последующим элементом в следующей строке? Мне получается только разбить файл на массив строк, а еще надо строку разбить на массив элементов и проверять.
PHP:
Вопрос в том, как разбить этот файл в массив элементов, чтобы потом можно было обратиться к элементу "стоимость" и сравнить с последующим элементом в следующей строке? Мне получается только разбить файл на массив строк, а еще надо строку разбить на массив элементов и проверять.
PHP:
<?php
$auto = fopen("\home\localhost\www\phpsite\auto.txt", "a+");
if (!$auto){
echo "Error"."</body></html>";
exit;
}
while(!feof($auto)){
$mas = fgetcsv($auto," ");
$num = count ($mas);
for ($i=0; $i<$num; $i++)
{
$mas2=explode(" ", $mas[$i]);
echo "$mas2[3]<br>";
}
}
fclose($auto);
?>
Спустя 33 минуты (2.04.2011 - 17:22) sebastjan написал(а):
Придумал мароку, используй базу, всё будет граздо поще.
Захоел вывел одно, захотел отсортировал.
Захоел вывел одно, захотел отсортировал.
Спустя 2 часа, 9 минут, 45 секунд (2.04.2011 - 19:32) Вадим написал(а):
Так в этом и задание) Чтоб именно с файла!
Спустя 2 минуты, 30 секунд (2.04.2011 - 19:34) quickxyan написал(а):
Цитата (sebastjan @ 2.04.2011 - 14:22) |
Придумал мароку, используй базу, всё будет граздо поще. Захоел вывел одно, захотел отсортировал. |
угу, говоришь преподу или работодателю на собеседовании типа вы что нахер файлы давайте через БД, и догадайся что они ответят. )
Спустя 9 минут, 37 секунд (2.04.2011 - 19:44) Вадим написал(а):
Хорош совет)
Спустя 2 часа, 40 минут, 38 секунд (2.04.2011 - 22:24) KonstantinK написал(а):
Вадим Считывай содержимое файла функцией file() она вернет тебе массив строк файла. После разбивай каждый элемент массива по пробелу(как ты и делал) , ну и там уже манипулируй данными как хочешь, тем более что там в каждой строке одинаковое количество элементов, а значит и сравнивать будет легко.
Спустя 23 часа, 5 минут, 5 секунд (3.04.2011 - 21:29) sebastjan написал(а):
Это хорошо если в строках одинакоеколичество элементов а если нет ?
Один вопрос в том как формируеться логика сохранеия этих данных.
А другой вопрос ка их выводить.
На мой взгляд если подходить изначально ,надо всё таки продумать как именно данные сохранять.
Ну а если это для препода ,так конечно ,как и писали выше, сравнивать элементы в масиве.
Как там, вроде пять ключевых элементов в строке.
Один вопрос в том как формируеться логика сохранеия этих данных.
А другой вопрос ка их выводить.
На мой взгляд если подходить изначально ,надо всё таки продумать как именно данные сохранять.
Ну а если это для препода ,так конечно ,как и писали выше, сравнивать элементы в масиве.
Как там, вроде пять ключевых элементов в строке.
Спустя 51 минута, 7 секунд (3.04.2011 - 22:21) KonstantinK написал(а):
Цитата |
Ну а если это для препода |
Судя по всему да. Поэтому и такое решение предложено. А по людски конечно все в бд и спокойно работай

Спустя 11 минут, 57 секунд (3.04.2011 - 22:33) Snus написал(а):
Вадим
Тебе нужно использовать функции
1. file
2. explode
3. usort
4. strpos
5. foreach
Тебе нужно использовать функции
1. file
2. explode
3. usort
4. strpos
5. foreach
Спустя 1 час, 51 минута, 59 секунд (4.04.2011 - 00:25) Guest написал(а):
Цитата (KonstantinK @ 2.04.2011 - 19:24) |
Вадим Считывай содержимое файла функцией file() она вернет тебе массив строк файла. После разбивай каждый элемент массива по пробелу(как ты и делал) , ну и там уже манипулируй данными как хочешь, тем более что там в каждой строке одинаковое количество элементов, а значит и сравнивать будет легко. |
while(!feof($auto)){
$mas = file($auto);
$num = count ($mas);
for ($i=0; $i<$num; $i++)
{
$mas2=explode(" ", $mas[$i]);
$mas[3]=usort($mas2);
//echo "$mas2[3]<br>";
echo "$mas<br>";
}
}
Так??? Не получаеться((( Ошыбки виносит((( Подправте где напутал ПЛИЗ!
Спустя 7 минут, 36 секунд (4.04.2011 - 00:32) RAZZOR написал(а):
Мне бросилось в глаза только вот это:
echo "$mas<br>";. Что же ты массив эхом то выводишь? Это вроде как будет Array возвращать. Используй print_r, а если нужно, чтобы выводило красиво, то забубень через foreach
Спустя 10 часов, 52 минуты, 45 секунд (4.04.2011 - 11:25) KonstantinK написал(а):
Вадим
А какие ошибки что не можешь сказать?
Но вот тут
а дальше можешь перебрать массив $auto к примеру так
получаем многомерный массив $temp_arr - это то что мы ищем.
А какие ошибки что не можешь сказать?
Но вот тут
$auto = file("\home\localhost\www\phpsite\auto.txt");мы получаем уже готовый массив $auto где элеметы строки файла 'auto.txt'
а дальше можешь перебрать массив $auto к примеру так
$temp_arr = array();
foreach($auto as $val)
$temp_arr[] = explode(" ", $val);
получаем многомерный массив $temp_arr - это то что мы ищем.
Спустя 40 минут, 12 секунд (4.04.2011 - 12:05) Guest написал(а):
while(!feof($auto)){
$mas = fgetcsv($auto," ");
$num = count ($mas);
for ($i=0; $i<$num; $i++)
{
$mas2=explode(" ", $mas[$i]);
$mas=usort($mas2);
//echo "$mas2[3]<br>";
foreach($mas as $key=>$value)
echo $value."<br>";
}
}
Все роботает кроме сортировки! $mas=usort($mas2); - выводит ошыбку ! Может не правильно пишу???
Спустя 56 минут, 9 секунд (4.04.2011 - 13:01) Guest написал(а):
С первым заданием справился:
$auto = fopen("\home\localhost\www\phpsite\auto.txt", "a+");
if (!$auto){
echo "Error"."</body></html>";
exit;
}
function funk($x, $y)
{
$arr1=explode(" ", $x);
$arr2=explode(" ", $y);
if($arr1[3]>$arr2[3]) return 1;
else if($arr1[3]<$arr2[3]) return -1;
return 0;
}
$mas = file("\home\localhost\www\phpsite\auto.txt");
$num = count ($mas);
usort($mas, "funk");
$mas2= array();
for ($i=0; $i<$num; $i++)
{
echo $mas[$i]."<br/>";
$t=explode(" ", $mas[$i]);
$mas2[$i]=$t[2];
}
$a=array_count_values($mas2);
echo count($a);
fclose($auto);
?>