Автор Тема: Многомерный массив не получается  (Прочитано 5184 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн chaynik4

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многомерный массив не получается
« : 16 Января 2003, 15:00:46 »
Вот эта запись работает:

$f=file("./mshop.txt");
      $e[1]=explode("\\\\",$f[1]);
    print_r ($e[1][1]);

А эта нет:

$f=file("./mshop.txt") ;
   for ($i=0; $i   $e=explode("\\\\",$f); }
 print_r ($e[1][1]);

Как будто $e[1][1] не существует.. Скажите, пожалуйста, в чем ошибка?

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
Многомерный массив не получается
« Ответ #1 : 16 Января 2003, 16:01:38 »
Цитировать
$e=explode("\\\\",$f);

попробуй
$e[$i]=explode("\\\\",$f[$i]);
Все болезни от нервов, только сифилис от удовольствия

Оффлайн chaynik4

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #2 : 16 Января 2003, 16:49:59 »
Спасибо very much. Извиняюсь за собственную дурость.. (я только начинаю учить PHP)

Если не трудно может подскажете, как наиболее быстро
по id находить в файле нужную строку.

Т.е. файл mshop.txt:
ID\\Цена\\Наименование товара
5200801\\3290\\Toshiba Satellite 5200-801
5200701\\2450\\Toshiba Satellite 5200-701
5205S703\\3090\\Toshiba Satellite 5205-s703
и т.д.
Скрипту приходит в переменной номер id
а нужно быстро найти строку соответствующую id чтобы обработать данные именно из этой строки.
Т.е. класическая (наверно) задача инет-магазина.
Так вот может есть функция, позволяющая
сразу из масива $f=file("./mshop.txt"); по id, содержащемся в строках файла, вычленить нужную переменную $f[$i], где $i номер искомой строки ..? (может используя регулярные выражения?)

И ещё, если не внапряг, подскажите нужно ли и если нужно то как лучше проверять содержание переменной id, передаваемой в url типа: http://shop.com/basket.php?c=add&id=5200701 если база находится в файле типа как указано выше..

Благодарю за вашу компетентность. Приятно удивлен эффективностью форума!

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #3 : 16 Января 2003, 17:21:01 »
Ну, во-первых, я бы не стал для поиска id читать весь файл целиком.
Можешь использовать примерно следующий код:

$f
=fopen(\'mshop.txt\',\'r\');
$flag=1;
while ($line=fgets($f)&&flag)
{
list($item_id,$item_price,$item_name)=explode(\'\\\\\',$line);
   if ($id==$item_id) $flag=0;
}
if (!$flag) print "Ничего не найдено";
else { ... }

У explode на самом деле в качестве параметра разделителя - два слеша в одиночных кавычках
« Последнее редактирование: 16 Января 2003, 17:38:07 от Maniac »
TANSTAAFL

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #4 : 17 Января 2003, 00:01:53 »
Maniac
так будет очень медленно.
по строчке читать, каждой делать лист, експлод...
вот код для скоростной проверки пароля, который я вчера набросал:
$fp fopen ($filename"r");
$contents fread ($fpfilesize ($filename));
fclose ($fp);
$pos1=strpos($contents,"\\n".$login."/");
if (
$pos1===FALSE) die("Invalid login"); //ид не найден
$pos1=$pos1+strlen($login)+1;
$pos2=strpos($contents,"\\n",$pos1);
$pass=substr($contents,$pos1+1,$pos2-$pos1); // это твоя строка от ид.
unset($contents);

логин - это твой ид

Оффлайн GoBeer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 12
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #5 : 17 Января 2003, 10:14:07 »
chaynik4 файлы это хорошо, но для задач интернет-магазина рекомендую воспользоваться БД, иначе много человеко-часов будет потрачено на кодирование функций, которые уже существуют в оптимизированном и протестированном (годами и тысячами программистов) виде. Хотя если это просто для самообразования - GL.

Оффлайн chaynik4

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #6 : 17 Января 2003, 13:35:01 »
всем спасибо, сижу разбираю скрипты - все очень полезно для самообразования :)  Думаю ещё чего спросить, но потом..

GoBeer
у меня в магазине не более 50 товаров. (Нужно простое добавление по ссылке(пишу вручную) добавление в корзину и заказ.)  Вы считаете что обработка файл с таким списком сильно затормозит? на сколько быстрее и в каких случаях БД?
Цитировать
которые уже существуют в оптимизированном и протестированном (годами и тысячами программистов) виде
Вы имеете в виду библиотеки (что-то где-то слышал).
А нельзя ли поподробней или где почитать?

Спасибо

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #7 : 17 Января 2003, 14:34:39 »
Нет, он имел в виду базу данных.
Но для твоего случая и уровня знаний, файлы будут как раз.
Именно поняв неудобство и ограничения файлов, можно понять прелесть базы данных.

точно так же, как прелесть PHP можно понять, лишь сделав один нормальный сайт на чистом html, и активно подополняв его.

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Многомерный массив не получается
« Ответ #8 : 19 Января 2003, 14:43:20 »
RomikChef абсолютно прав во всем, хотя наверно это высказывание никому ничем не поможет, но считаю, что как раз наоборот - использование базы данных намного проще для начинающего, чем использование файлов...

chaynik4 советую сецчас не терять время с файлами (это можно действительно делать только в целях самообразования) а начинать писать более универсальные вещи, подвязанные на БД, потому что уверен, что 50ю продуктами магазин не закончится, да 50 - это уже не 3-5...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Многомерный массив не получается
« Ответ #9 : 19 Января 2003, 14:48:28 »
Семя, ты не понимаешь одного.
Базы данных - это те же файлы. Только сложнее.
И не поняв, как это работает, человек сможет пользоваться базой только как обезьяна - не понимая, почему и как оно работает. Именно такие и заполонили все форумы - знают ответ на три самые распространенные задачи, и лезут отвечать на любые вопросы.
именно таким приходится отвечать на каждый чих, потому, что они не понимают, как оно работает, и не могут логически вывести ответ из имеющихся знаний.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28