Forum Webscript.Ru

Программирование => PHP => Тема начата: xax от 08 Января 2005, 02:33:02

Название: Массивные игры
Отправлено: xax от 08 Января 2005, 02:33:02
Есть код:
  $file="news/news.txt";
  $arr=file($file);
  $str=explode(";",$arr[$n]);
$massive=$arr[$n];
$flip_array=array_flip($massive);
$runame=explode(";",$flip_array);
if(eregi("[А-Яа-я]", $runame[0])) {
$runame_title="($runame[0])";
}
параметр $n берётся из адресной строки, проблемма в том, что $massive - это определённая строчка в файле, а выводится $flip_array, как  просто array, а не как перевёрнутый $massive почему так?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 08 Января 2005, 03:02:33
потому, что это строчка, а не массив
Название: Массивные игры
Отправлено: xax от 08 Января 2005, 12:39:29
RomikChef А как перевернуть строку с конца на начало?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 08 Января 2005, 14:23:05
а зачем?
Название: Массивные игры
Отправлено: xax от 08 Января 2005, 20:50:07
RomikChef Хех, есть одна сложностьь при записе в массив: если не все данные введены, а потом написано ещё что - то с конца, то оно определяется не верно, так вот - надо строку в которой есть пропуски считать с конца и вывести это значение из массива.
Название: Массивные игры
Отправлено: Mog. от 09 Января 2005, 08:28:02
xax
сначала строку $massive преобразуй в массив, а потом переворачивай её
Название: Массивные игры
Отправлено: PyJIeT от 09 Января 2005, 13:01:57
Проще по-моему перевернуть...(код теоретический, не проверял тк бросил php и сейчас занимаюсь c++):

function re_str($str){
$newstr = "";
$size = strlen($str);
while($size--) $newstr .= $str[$size];
return $newstr;
}
$str = "hello";
echo re_str($str); // выведет olleh
?>
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 09 Января 2005, 13:21:59
PyJIeT вот и занимайся.
а сюда не лезь
Название: Массивные игры
Отправлено: xax от 09 Января 2005, 13:39:40
PyJIeT Спасибо, а не мог бы ты описать ещё, что к чкму здесь?
Так как у меня код не работает, вернее работает, но он почему - то обрезает строку, и убирает знак разделения в массиве

RomikChef Если можешь то и ты объясни работу скрипта
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 09 Января 2005, 13:56:17
какой смысл описывать работу скрипта, если во-первых, в пхп есть специальная функция, которая делает то же самое.
а во-вторых - это тебе все равно нужно нежно не это?
Название: Массивные игры
Отправлено: xax от 09 Января 2005, 14:00:57
RomikChef Просто напиши функцию, которая переворачивает строку
Название: Массивные игры
Отправлено: Mog. от 09 Января 2005, 14:06:53
xax
Вместо $massive=$arr[$n]; сделай
$massive=explode(";",$arr[$n]);

Да! И вместо $runame=explode(";",$flip_array);

$runame=$flip_array;
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 09 Января 2005, 14:14:07
xax вот сколько я тебя вижу - не устаю поражаться.
тебя в музей надо сдать.
Название: Массивные игры
Отправлено: xax от 09 Января 2005, 14:14:40
Mog. А потом наверное стоит разбить $runame на элементы, через ";"?
Название: Массивные игры
Отправлено: xax от 09 Января 2005, 14:17:24
RomikChef Чё такое - то?

Mog. Странно, но так как ты предложил ничего не работает: просто ничего не выводится
Название: Массивные игры
Отправлено: Mog. от 09 Января 2005, 15:10:04
А на словах можешь рассказать что ты хочешь сделать?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 09 Января 2005, 15:20:44
Mog.
он уже пробовал.
Но проблема как раз в том, что оне понимает ,что делает.
И объяснить не в состоянии.
Это мы уже проходили.

Здесь вариант всего один.
Либо из его бессвязного мычания становится ясно, что ему надо, то писать надо КОД ЦЕЛИКОМ, а не куски, как это делаешь ты. Он просто не знает, что с ними делать. Как можно человеку писать кусок программы, если он не знает как кго программа работает?
В противном случае медицина бессильна.
Я на этом форуме держу его только из жалости.
Хотя из жалости как раз, возможно, было бы лучше не пускать - может быть и оставит он эту дрную идею - программирвоать
Название: Массивные игры
Отправлено: Mog. от 09 Января 2005, 15:29:08
RomikChef  
Зато он очень упорный человек. Который месяц бьётся с файлом news.txt
Может в конце концов победит!?
Название: Массивные игры
Отправлено: xax от 09 Января 2005, 18:56:44
Mog. Сенкс, за поддержку.
Собственно говоря мне нужно строчку из файла считать в массив, но только эту строчку считать нужно не с начала а с конце, так, чтобы последний элемент строки стал первым (0).

RomikChef Ты не прав, тот код, который был написан в самом начале - его писал я и всё прекрасно понимаю, что он делает, только он не совсем верный, так как там $arr[$n], не считывается, как массив.
Название: Массивные игры
Отправлено: Mog. от 09 Января 2005, 19:12:12
Цитировать
xax:
чтобы последний элемент строки стал первым (0).

А зачем тогда array_flip ?
Для этого достаточно array_reverse
Это раз.
Тебе второй день толкуют о том, что
Цитировать
RomikChef:
потому, что это строчка, а не массив

Это два
И вообще, зачем делать первый элемент последним? У элемента есть индекс, индекс тебе известен, ну и обращайся к элементу по индексу, а не по абстрактному адресу "первый - последний".
В конце концов первый - последний это одно и то же, считать только с минусом надо.
Название: Массивные игры
Отправлено: xax от 10 Января 2005, 15:40:11
Mog. Сенкс, что сказал функцию переворота строки
Но код
  $file="news/news.txt";
  $arr=file($file);
  $str=explode(";",$arr[$n]);

$massive=$arr[$n];
$flip_array=array_reverse($massive);
$runame=explode(";",$flip_array);
if(eregi("[А-Яа-я]", $runame[0])) {
$runame_title="($runame[0])";
}
$runame_title Не выводит значение, а выводит Array
Понимаешь, $arr[$n] - не массив, в этом и проблема
Название: Массивные игры
Отправлено: xax от 10 Января 2005, 15:53:24
Цитировать
Mog.:
В конце концов первый - последний это одно и то же, считать только с минусом надо.

Если ты имеешь ввиду, что $str[-1], то это не работает, я уже пробовал
Название: Массивные игры
Отправлено: Mog. от 11 Января 2005, 08:19:48
Цитировать
xax:
Понимаешь, $arr[$n] - не массив, в этом и проблема

Я понимаю это, но я не понимаю, что мешает сделать массив из строки.
Цитировать
xax:
$str[-1]
я не это имел ввиду, ты чё!
Название: Массивные игры
Отправлено: xax от 12 Января 2005, 02:08:53
Mog.
А как строку сделать массивом?
Название: Массивные игры
Отправлено: Mog. от 12 Января 2005, 08:06:44
xax explode
Название: Массивные игры
Отправлено: xax от 12 Января 2005, 11:19:01
Mog. Нет - это не то, мне нужно считать последнюю запись в строке, но я не могу этого сделать, так как при разбитии строки на массив, то по идее последняя запись должна быть $str[52], но это далеко не всегда так, как в строке некоторые предпоследнии поля не вписываются из - за отсутствия информации, соответственно и $str становится плавающим по номеру.
Название: Массивные игры
Отправлено: Mog. от 12 Января 2005, 11:42:06
Цитировать
xax:
некоторые предпоследнии поля не вписываются из - за отсутствия информации
Куда не вписываются?
Отсутствие информации это "пустая строка", т.е. $str[51]=""

Вписывай их насильно, в конце концов. Кто мешает?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 12 Января 2005, 11:44:38
Mog.
последний элемент массива можно, вообще-то, узнать, и не зная точного номера
Название: Массивные игры
Отправлено: xax от 13 Января 2005, 02:02:26
RomikChef КАК?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 13 Января 2005, 02:37:47
USE YOUR BRAIN.
if any
Название: Массивные игры
Отправлено: xax от 13 Января 2005, 02:54:23
RomikChef Блин, ром - моего мозга хватило только на переворот строки, так чтобы последний элемент стал первым.
Скажи как считать последний элемент строки не переворачивя его и не зная его номер
Название: Массивные игры
Отправлено: Mog. от 13 Января 2005, 12:15:19
xax
Например
1. array_pop - выталкивает элемент в конце массива
2. end() передвигает внутренний указатель массива array на последний элемент и возвращает этот элемент.

Матчасть учить все же необходимо
Название: Массивные игры
Отправлено: Lutik от 13 Января 2005, 12:46:05
Читаю это все, а в голову приходит только одно!
http://phpclub.net/manrus/f/ref.array.html (http://phpclub.net/manrus/f/ref.array.html)
Там помойму все красиво написано!
Название: Массивные игры
Отправлено: Mog. от 13 Января 2005, 15:45:43
Lutik
Эх-ма! Если бы все люди читать любили, мануалы например. Была бы не жизнь, а малина (в са\'харе).
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 13 Января 2005, 16:07:52
здесь ппроблема в другом.
он не умеет считать.
это человек на уровне отстающего пятиклассника.
идея о том, что последний элемент можно найти, посчитав элементы - просто не приходит ему в голову.

здесь до мануала даже речь не доходит.
в мануале можено посмотреть, КАК сделать то, что нужно,
Но он НЕ ЗНАЕТ, тчоему нужно. элементарных арифметических, житейских операций.
я не представляю, как он вообще с таким складом до сих пор грызет программирвоание.
Название: Массивные игры
Отправлено: Mog. от 13 Января 2005, 16:15:57
RomikChef, чел (читай хах) не может сбацать алгоритм, не может переложить его на язык программирования ..., не может даже обьяснить "на словах" чего он хочет. Это плохо.
Чел упорный, это хорошо.
Ну че я могу сказать...
Название: Массивные игры
Отправлено: xax от 13 Января 2005, 17:42:59
RomikChef
Как сосчитать количество элементов в строке?
Название: Массивные игры
Отправлено: Lutik от 13 Января 2005, 18:14:28

$str="bla bla bla bla bla";
$string=explode(" ", $str);
$num=count($string);
echo $num;
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 13 Января 2005, 18:22:56
и это при том, что данную команду он знает.
на ней основаны все его скрипты. они работают с file
просто он не в состоянии допереть, что file возвращает массив и explode возвращает массив. Да что там говорить, если он до сих пор путает строки и массивы.
Феномен
уникум.

Сейчас он спросит, как найти последний элемент массива, зная число элементов.
Название: Массивные игры
Отправлено: Croaker от 13 Января 2005, 19:29:50
Lutik

А не проще:


print strlen("bla bla bla bla bla");


? :)
Название: Массивные игры
Отправлено: Lutik от 13 Января 2005, 19:40:35
Croaker! Я просто думаю, что ему надо найти целые слова, а не количество символов в строке. Поэтому так и написал! :)
Хотя я вообще не понимаю что он хотит. Он так запутался в лабиринтах программирования, что даже я не могу понять, что он хочет.
:insane:
Название: Массивные игры
Отправлено: xax от 14 Января 2005, 00:51:18
RomikChef Ром, я прекрасно понимаю, что я могу это сосчитать, но у меня строка написана так:
$str="sdfs;sccfzs;;;;;;sdfsf;;;sd;;;sd;;;sdgsd;sdfvgsdf;sdgvsvgf;sdfgsfg;;;;fИ count это считает неправильно он не считает ;; как 1, он по другому считает, а мне надо выводить последнее и предпоследнее значение строки
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 14 Января 2005, 01:23:57
Цитировать
xax:
count это считает неправильно он не считает ;; как 1

не надо врать.

$str=";;;";
echo count(explode(";",$str))."\\n";
$str="1;1;1;1";
echo count(explode(";",$str))."\\n";
?>
выводит 4 в обоих случаях.

Ну, что ты еще придумаешь интересного?
Название: Массивные игры
Отправлено: Mog. от 14 Января 2005, 08:08:14
Цитировать
xax:
он не считает ;; как 1, он по другому считает

Интересно, как по другому?
Название: Массивные игры
Отправлено: xax от 15 Января 2005, 16:51:07
RomikChef
Mog.
Блин народ, у меня, может хостер такой странный, но count считает, что ;;; это нужно считать за единицу, то есть, что значение - ; и разделено оно ; вот поэтому я не могу воспользоваться count или немного по другому, но код
$k=count($str);

echo "$k/$str[$k]";
Выводит мне 54, когда у меня всего мах элементов в строке 52
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 15 Января 2005, 19:08:54
Mog.
у тебя остались какие-то сомнения?
Название: Массивные игры
Отправлено: xax от 15 Января 2005, 22:14:58
RomikChef Странные вы люди: я прошу написать мне функцию, которая может перевернуть строку или если такой функции нет, то рассказать мне принцип создания такой штуки.
Неуже - ли это так сложно, что я не смогу справиться?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 15 Января 2005, 22:35:13
Цитировать
xax:
я прошу написать мне функцию, которая может перевернуть строку

дурилка картонная.
у тебя ума даже не хватает понять, что тебе никакой переворот строк не поможет.
поскольку ты за все время, пока мучаешь пхп, так и не научился отличать строки от массивов.

а люди миы странные, да.
Название: Массивные игры
Отправлено: xax от 16 Января 2005, 14:08:47
RomikChef Блин, я понимаю, что строка - не массив, но ведь можно её заключить в массив так, чтобы все элементы строки поменяли свои номера наоборот?
Название: Массивные игры
Отправлено: Меняздесьдавнонет от 16 Января 2005, 15:36:10
нет не понимаешь.
поскольку тебе надо перевернуть массив, а ты просишь функцию, которая переворачивает строку.

при том, что ни массив, ни строку тебе переворачивать не надо вообще.
Название: Массивные игры
Отправлено: xax от 17 Января 2005, 02:51:41
RomikChef Ок, тогда каким образом можно считать последний элемент строки не пользуясь count()?
Название: Массивные игры
Отправлено: Lutik от 17 Января 2005, 11:28:39
xax, если ты загнал строку в массив, то чтобы получить последний элемент массива необходимо использовать функцию end()!
 end() передвигает внутренний указатель массива array на последний элемент и возвращает этот элемент.
Читай маны!
Здесь пример ->http://phpclub.net/manrus/f/end.html (http://phpclub.net/manrus/f/end.html)
Название: Массивные игры
Отправлено: xax от 18 Января 2005, 00:37:41
Lutik Во сенкс, но только есть но, как строчку заключить в массив, ну тоесть, есть $str - это строчка $str[1] - это элемент строчки, но строчка не заключена в массив?
Название: Массивные игры
Отправлено: Lutik от 18 Января 2005, 11:35:55

$st="HelLo world RTFM";
$str = preg_split ("/[\\s,]+/", $st);
echo end($str);

где, $st твоя строка, $str массив строки $st.
Название: Массивные игры
Отправлено: for_i_0 от 18 Января 2005, 13:22:56
Lutik
ИМХО это задача не требует вмештельства рег/эксп.
Название: Массивные игры
Отправлено: for_i_0 от 18 Января 2005, 14:46:48
Цитировать
Lutik:
$st="HelLo world RTFM";$str = preg_split ("/[s,]+/", $st);echo end($str);


Не вижу смысла. Что $st ? и что $str ? строка и строка в массиве что ли ?

куд еще не шло:

$st="HelLo world RTFM";
$str = explode (" ", $st);
echo end($str);


Хотя суть мне все равно не понятна. xax ели не надоело объясни нормальным человечским языком, что это все значит ?
Название: Массивные игры
Отправлено: xax от 18 Января 2005, 23:14:16
for_i_0 Блин, есть строка в теккстовом файле, файл я заключаю в массив (Строка - элемент массива), саму строку тоже разбиваю в массив по средством $str=explode(";", $Строка) тогда у меня получается куча элементов $str[0-52] (От нуля до 52), но есть трабла, что если например пропущен элемент 45 (Между ; ничего нету, тогда последний элемент становится 51) вот в этом и проблемма
Название: Массивные игры
Отправлено: for_i_0 от 19 Января 2005, 08:55:36
xax
Судя по предыдущим постам тебе нужен был последний элемент массива. А теперь ты зациклился на цифре 52. Где закономерность ? Последний элемент массива остается тем же каким был. Но если даже так, что тебе мешает посчитать и добавить недастающий элемент в начало массива ?(хотя сомневаюсь что это тебе надо)
Название: Массивные игры
Отправлено: Lutik от 19 Января 2005, 14:21:59
Бред! Я умываю руки.
Человек напрочь отказывается читать литературу! О чем с ним можно тогда говорить!
Название: Массивные игры
Отправлено: Mog. от 19 Января 2005, 20:12:31
Ребята! Я ху.ю без баяна. Чел не только маны не читает, но и собственноручно созданную тему на форуме.
Название: Массивные игры
Отправлено: xax от 20 Января 2005, 00:42:54
Хех, забейте
Название: Массивные игры
Отправлено: xax от 20 Января 2005, 15:47:19
Кстати я справился с проблеммой
Название: Массивные игры
Отправлено: Lutik от 20 Января 2005, 19:05:01
Памятник тебе поставить надо! :)