Forum Webscript.Ru

Программирование => PHP => Тема начата: kide от 01 Октября 2003, 16:12:06

Название: Нахождение строк в массиве
Отправлено: kide от 01 Октября 2003, 16:12:06
Есть массив,в котором иногда попадаются строки содержащие только / , и их надо убить!
Как?
Название: Нахождение строк в массиве
Отправлено: Меняздесьдавнонет от 01 Октября 2003, 16:15:01
в цикле
Название: Нахождение строк в массиве
Отправлено: kide от 01 Октября 2003, 16:26:39
Я делал так:
for ($i=$k; $i<$m; $i++) {
if ($screen[$i]=="/")
 {
$screen[$i]="";
};
};
, где $screen и есть мой массив. Условие не выполняется и все!
Название: Нахождение строк в массиве
Отправлено: Меняздесьдавнонет от 01 Октября 2003, 16:35:12
Для начала, у тебя в этом коде не хватает одной скобки и он вообще работать не будет.

Далее.
Если условие не выполняется, то из этого следует очень простой вывод.
в массиве НЕТ элементов, состоящих из "/"
Элементарно, правда?
И не спеши возражать.
убедись сам, что это так.

подсказка.
То ,что мы воздуха не видим, еще не означает, что его не нет?
Название: Нахождение строк в массиве
Отправлено: kide от 01 Октября 2003, 16:51:59
Цитировать
RomikChef:
Для начала, у тебя в этом коде не хватает одной скобки и он вообще работать не будет.

Скобку забыл скопировать (уже исправил) !
Цитировать
RomikChef:
То ,что мы воздуха не видим, еще не означает, что его не нет?

И про воздух ты прав! Незаметил пробелы. Но их количество непостоянно, как теперь написать условие?
Название: Нахождение строк в массиве
Отправлено: AliMamed от 01 Октября 2003, 17:11:06

for ($i=$k; $i<$m; $i++) {
    $t_screen=str_replace(" ", "", $screen[$i]);
    if ($t_screen=="/")
    {
         $screen[$i]="";
    };
};

или в регулярные выражения подаца
Название: Нахождение строк в массиве
Отправлено: Меняздесьдавнонет от 01 Октября 2003, 17:18:38
Аали, если там одна палка, то trim() там будет как раз на месте :-)))
Да и заменять специально не надо.
Ему же потом неболь эту штуку имплодить обратно.

kide
просто в условие добавь
if (trim($screen[$i])=="/")
Название: Нахождение строк в массиве
Отправлено: AliMamed от 01 Октября 2003, 17:22:11
Цитировать
RomikChef:
Аали, если там одна палка, то trim()

дык я тоже сначала про трим подумал, но он ж грит
Цитировать
kide:
их количество непостоянно

трим жеж уберет тока первый и последний пробел, а если там "пробелпробелпалкапробел" то получится "пробелпалка"

но если там канешна может быть только по одному, то трим конечно
Название: Нахождение строк в массиве
Отправлено: Меняздесьдавнонет от 01 Октября 2003, 17:28:30
Цитировать
AliMamed:
трим жеж уберет тока первый и последний пробел

ай-яй-яй :-))))
Какое забавное заблуждение :-))))
Впервые с таким сталкиваюсь.
трим убирает начальные и конечные, а не первый и последний.
Это все проблемы перевода.

трим убирает ВСЕ пробельные символы в начале и в конце строки.
trim("  \\n\\t\\t\\t  \\n   aaa  \\n\\n\\n\\r\\t\\n   \\n") вернет тебе "aaa"
Название: Нахождение строк в массиве
Отправлено: AliMamed от 01 Октября 2003, 17:37:14
Цитировать
RomikChef:
ай-яй-яй :-))))

ить! ща проверил - и правда все убирает. хм
это меня ман в заблуждение ввел. про перевод не знаю но вот, что в оригинале
Цитировать
trim --  Strip whitespace from the beginning and end of a string


кто скажет, что whitespace не единственное число в того я первым брошу камень=)
Название: Нахождение строк в массиве
Отправлено: Меняздесьдавнонет от 01 Октября 2003, 17:40:38
space - единственное
whitespace - это термин, который и означает всю эту лабуду
Название: Нахождение строк в массиве
Отправлено: kide от 02 Октября 2003, 14:35:30
Цитировать
RomikChef:
просто в условие добавь
if (trim($screen[$i])=="/")

Спасибо! Все работает!
Название: Нахождение строк в массиве
Отправлено: Yukko от 02 Октября 2003, 15:20:23
Цитировать
AliMamed:
кто скажет, что whitespace не единственное число в того я первым брошу камень=)

Ты просто неправильно перевел...
whitespace переводится дословно "свободное место/пространство", более техническим языком проблельные символы или \\s+ (один или более пробелов).