Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вытаскивание ключей из массива
 
 автор: kazakru   (25.07.2006 в 00:18)   письмо автору
 
 

Доброго времени суток.
Есть массив с датами:

01.03
12.05
02.01.1923
09.12
23.02 и так далее

задача следущая - найти ключи из массива начиная с сегодняшнего дня
$den=date(d);
$mes=$date(m);
по какой то день заданный в переменой $kol ( в ней просто число - сколько дней показать например 14 ) и при этом надо учесть что в эти 14 дней может попасть и следущий месяц и даже следущий год если напрмиер сегодня 20 декабря.
при этом нельзя разбить explode, так как уже и так этот массив получен из другого.
в голове вертиться использовать цикл с array_keys ,только не могу врубиться как это все организовать... уж простите дурака...

   
 
 автор: RV   (25.07.2006 в 00:28)   письмо автору
 
   для: kazakru   (25.07.2006 в 00:18)
 

Почему нельзя разбить explode ?
юзать foreach

   
 
 автор: kazakru   (25.07.2006 в 00:53)   письмо автору
 
   для: RV   (25.07.2006 в 00:28)
 

ну пототму что уже разбито из другого массива
09.12.|праздник итакой то|M

я просто запутаюсь в массивах и ключи потеряю

вот тут я накатал
$kol=14;

for ($m=0; $m < $kol; $m++)
{
$dni=date('d', mktime(0,0,0, date(m), date(d)+$m, date(y)));
$mes=date('m', mktime(0,0,0, date(m), date(d)+$m, date(y)));
)
вот и получим 2 переменные с датами и месяцом на 14 суток вперед
фу, с этой частью справился, теперь надо найти эти даты в массиве

типа $kluch=array_keys(substr($massiv,0,2), $dni);
но при этом надо чт обы и месяц был в деле и на выходе получить ключи где будут совпадения ии дня и месяца.
брр уже сам пока писал запутался

   
 
 автор: kazakru   (25.07.2006 в 00:57)   письмо автору
 
   для: kazakru   (25.07.2006 в 00:53)
 

во блин только что осенило

$kol=14;

for ($m=0; $m < $kol; $m++)
{
$dni=date('d.m', mktime(0,0,0, date(m), date(d)+$m, date(y)));

$kluch=array_keys(substr($massiv,0,5), $dni);
)

будет так работать?

   
 
 автор: kazakru   (25.07.2006 в 01:11)   письмо автору
 
   для: kazakru   (25.07.2006 в 00:57)
 

блин все не так, блин, что то я не врублюсь

   
 
 автор: kazakru   (25.07.2006 в 09:49)   письмо автору
 
   для: kazakru   (25.07.2006 в 01:11)
 

хелп!!!
ну как найти ключи в массиве

$kol=14;

for ($m=0; $m < $kol; $m++)
{
$dni=date('d.m', mktime(0,0,0, date(m), date(d)+$m, date(y)));

)

вот есть список дат на следущие 14 суток мне надо посмотреть естьли совпадения дат в масисиве и если есть то дать мне список ключей

вот если так сделать



$kol=14;

for ($m=0; $m < $kol; $m++)
{
$dni=date('d.m', mktime(0,0,0, date(m), date(d)+$m, date(y)));
$kluch[]=array_keys($massiv, $dni);
)

то я получу массив $kluch но в нем будут и нормальные значения и пустые
вот так
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( [0] => 89 ) [4] => Array ( ) [5] => Array ( [0] => 90 ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( [0] => 92 [1] => 93 ) [13] => Array ( ) )

да еще там один пропущенный ключ так как там дата с годом т.е. 02.04.1999

---------------------
ладно пропущенный массив пропустим решил проблему
теперь в массиве тольок дата такого формата 04.03

как получить нормальный массив ключей без пустых значений

а еще точнее мне надо первый ключ и последний

   
 
 автор: cheops   (25.07.2006 в 11:00)   письмо автору
 
   для: kazakru   (25.07.2006 в 00:18)
 

Хм... зря вы с датой в форматированном состоянии работаете - обычно такие операции производят над датами в UNIXSTAMP-формате, т.е. в виде числа секунд прошедших с полуночи 1 января 1970 года.

   
 
 автор: kazakru   (25.07.2006 в 11:20)   письмо автору
 
   для: cheops   (25.07.2006 в 11:00)
 

ну в данном случае без разницы в каком виде в массиве будут даты представлены

что в 03.04
что в 23184745758

смысл останеться тот же надо найти ключи в массиве значения которого совпадают с теми данными что нужны

и к томуц же у меня даты есть и 1800 года и поэтому изначально я начал работать с реальными датами, да бы всякие вычисления проводить быстрее и без минусовых значений которые будут в случае если дата меньше 70 года, да еще не известно как себя поведет скрипт после 2038 года, а так я спокоен.
только вот проблема с массивами, нуне могу я еще снимми толком работать

   
 
 автор: kazakru   (25.07.2006 в 12:16)   письмо автору
 
   для: kazakru   (25.07.2006 в 11:20)
 

все, всем спасибо, разобрался сам
пришлось в этот цикл включить еще foreach

   
 
 автор: kazakru   (25.07.2006 в 13:09)   письмо автору
 
   для: kazakru   (25.07.2006 в 12:16)
 

обьясните плиз
если у меня есть перменная с числовыми значениями

и я пишу условие
if ( $qwe =="")
или
if (!$qwe)

то при наличии в этой переменно нуля (0) условие всеравно выполняется -почему?

ладно и с этим разобрался

еще вопрос :)

суть в том что мне надо выводить только определенные даты помеченные буквами
B
M
E
H
что соответсвует
дни рождения
траур
события
праздники

то что надо вывести задается в отдельном файле
если бы мне можно было только один параметр выводить
то это выглядело бы так

if ($qwe==$parametr)

но мне надо что бы было возможным задать несколько параметров причем любой комбинации

то есть например переменная $parametr могла содержать в себе и М и Н ( $parametr='MH' )

вот как мне быть в этой ситуации?

   
 
 автор: kazakru   (25.07.2006 в 14:28)   письмо автору
 
   для: kazakru   (25.07.2006 в 13:09)
 

up
за ранее извиняюсь за настойчивасть и надоедливость

   
 
 автор: cheops   (25.07.2006 в 15:26)   письмо автору
 
   для: kazakru   (25.07.2006 в 13:09)
 

Хм... просто объединяйте их в условие
<?php
if ($qwe==$parametr && $qwe==$parametr1 && $qwe==$parametr2)
?>


PS Под новые вопросы лучше заводить новые темы

   
 
 автор: kazakru   (25.07.2006 в 15:35)   письмо автору
 
   для: cheops   (25.07.2006 в 15:26)
 

насчет новой темы согласен - не углядел - уж простите


а как тогда может выглядеть все это вместе.
я все равно не пойму а как в конфиге задать что отображать?

тоесть что бы человек понял когда будет конфигурировать
типа

$parametr='MBHE'; 
и при этом выполнилось бы условии при нахождени всех этих букв

   
 
 автор: kazakru   (25.07.2006 в 17:59)   письмо автору
 
   для: kazakru   (25.07.2006 в 15:35)
 

закройте тему плиз, во всем разобрался.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования