Просмотр полной версии : Проблема с in_array()
Delt@DIM
30.03.2003, 19:39
Помогите с одной вещью...
Вот код:
<?
$date=date("d-m-Y");
$links=file("links.txt");
if (in_array($date, $links)){
echo "Такая дата уже есть!";
}
?>
Значит так, Присваеваем первой переменной текущую дату, а переменной $links - массив из файла links.txt, в котором находятся даты:
12-12-12
23-23-23
29-32-12
15-04-12
...
Что-то в этом роде... Затем, проверяю функцией in_array сущесвует ли в массиве $links значение $date, а именно текущее число. И в случае удачи, выводит сообщение.
Дык в чем проблема, сообщение не выводится, даже если текущая дата есть в массиве $links. Может я что делаю не так?
Подскажите!
Alex Wanderer
31.03.2003, 11:51
строка: $date=date("d-m-Y");
Из мануала:
The following characters are recognized in the format string:
Y - year, 4 digits; e.g. "1999"
сделай echo $date; и посмотри...
Delt@DIM
01.04.2003, 13:17
Да, это я моленько перепутал. Но даже смена даты на правильную не дает нужного результата!
Вот в чем фокус (как-то странно получается...) :
Если текстовой файл имеет следующий вид:
("_" -обозначается начало и конец файла)
_____________________________________________
12-12-2003
12-21-3144
12-43-1234
...
_____________________________________________
То эта функция бутет "странно" работать, она не будет считать первую строку за значение массива, т.е. если дата будет 12-12-2003, то функция не даст положительного ответа о нахождении значения в массиве. А если дата будет, к примеру, 12-43-1234 все сразу заработает и выдаст положительный результат. Но, есть еще один "косяк", если в текстовом файле в самом конце (в самом низу) будет пустая строка:
_____________________________________________
12-12-2003
12-21-3144
12-43-1234
_____________________________________________
Т.е. после даты 12-43-1234 стоит переход строки, то функция не будет работать вообще!!! Во как!
Кто знает как с этим бороться?
Еще есть вопрос:
Есть ли такая функция, которая удаляет ключ и значение в массиве, и смещает указатели массива:
Т.е есть массив $arr= array("1", "2", "3");
И нужно удалить первое значение значение: "2" (т.к. в массиве начало с 0), но так, чтобы сместились показатели массива, т.е. теперь первым значением массива станет "3" ("1", "3")
Или есть какие-либо подобные функции?
Alex Wanderer
02.04.2003, 18:45
1) Быть может, тебя спасет такая штука:
(впиши после $links=file("links.txt"); )
for ($i=0; $i<sizeof($links); $i++) {
$links[$i]=chop($links[$i]);
};
2)array array_splice (array input, int offset [, int length [, array replacement]])
array_splice() удаляет элементы, указанные смещением offset и длиной length из массива input и замещает их элементами массива replacement, если он предоставлен. Функция возвращает массив, содержащий извлечённые элементы.
Если offset положительное, то удаляемая часть отсчитывается смещением от начала массива input. Если offset отрицательное, то удаляемая часть начинается на указанную величину от конца массива input.
Если length отсутствует, удаляется всё, начиная от offset до конца массива.
Если length специфицирована и положительная, удаляется указанное количество элементов.
Если length специфицирована и отрицательная, то конец удаляемой части будет находиться на указанное количество элементов от конца массива.
Подсказка : для удаления элементов от offset до конца массива, когда replacement также специфицирован, используйте count($input) для length.
Если массив replacement специфицирован, то удаляемые элементы замещаются элементами из этого массива. Если offset и length таковы, что ничего не удаляется, то элементы массива replacement вставляются вместо специфицированных смещением offset.
Подсказка : если replacement это один элемент, нет необходимости помещать array() вокруг него, если только элемент сам по себе не является массивом.
3) RTFM
Delt@DIM
03.04.2003, 11:34
Да это понятно!
Но а если мне нужно будет удалить 2 элемент массива, и чтобы все остальные остались на месте? Или мне нужно удалить 2 и 5 элементы...
Alex Wanderer
04.04.2003, 19:37
Оригинал написал(а) Delt@DIM
Но а если мне нужно будет удалить 2 элемент массива, и чтобы все остальные остались на месте...
Дык, $links[2]="";
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.