Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Viva.
1 - um array com N elementos, onde um deles é a data.
2 - tenho data actual
3 - percorrer o array e verificar quais os elementos com a data inferior à data Actual
4 - os inferiores para um lado (arrayEsq), os superiores para outro (arrayDir).
;)
use um For pra pecorrer as arrays e teste as datas....
algo parecido com isso...
<?php
$arrayright = "";
$arrayleft = "";
$dados = array("dados"=>
array("data"=>'...'),
array("data"=>'...'),
array("data"=>'...'),
array("data"=>'...'),
array("data"=>'...'),
array("data"=>'...')
);
for($i=0; $i<count($dados['dados']); $i++){
$d = $dados['dados'];
$d1 = strtotime($d[$i]['data']);
if($d1<strtotime('NOW()')) $arrayleft[] = array($d[$i]);
else $arrayright[] = array($d[$i]);
}
?>O que você já fez ?
macielcr7, desnecessário isso aqui:
$arrayright = "";
$arrayleft = "";
Desnecessário e errado, se você pretende guardar um array nessas variáveis, você declara elas como array, e não como string vazia.
Obrigado malta.
O objectivo é ter no final dois arrays. Não tem nada a ver com par e/ou impar. Tem a ver com datas.
objectos, onde o campo data < dataActual = arrayX
os restantes vão para o arrayY
Vou ver se coloco aqui a versão final.
;)
Pois é, entendi errado então, mas então seria isso que você deseja ?
andrey@andrey:~$ sudo vim /var/www/array.php
1 <?php
2 ini_set( 'date.timezone' , 'America/Sao_Paulo' );
3 $dataRight = Array();
4 $dataLeft = Array();
5 $datas = Array(
6 '2011-08-03', '2011-08-04',
7 '2011-08-05', '2011-08-06',
8 '2011-08-07', '2011-08-08',
9 '2011-08-09', '2011-07-03',
10 '2011-07-04', '2011-07-05',
11 '2011-07-06', '2011-07-07',
12 '2011-07-08', '2011-07-09',
13 );
14 foreach( $datas as $data ){
15 if( $data < date( 'Y-m-d', time() ) ){
16 $dataRight[] = $data;
17 }else{
18 $dataLeft[] = $data;
19 }
20 }
21 print_r( $dataRight );
22 echo "----------------------\n";
23 print_r( $dataLeft );
~
~
~
~
~
:wq!
andrey@andrey:~$ php -f /var/www/array.php
Array
(
[0] => 2011-07-03
[1] => 2011-07-04
[2] => 2011-07-05
[3] => 2011-07-06
[4] => 2011-07-07
[5] => 2011-07-08
[6] => 2011-07-09
)
----------------------
Array
(
[0] => 2011-08-03
[1] => 2011-08-04
[2] => 2011-08-05
[3] => 2011-08-06
[4] => 2011-08-07
[5] => 2011-08-08
[6] => 2011-08-09
)
andrey@andrey:~$ cat /var/www/array.php
<?php
ini_set( 'date.timezone' , 'America/Sao_Paulo' );
$dataRight = Array();
$dataLeft = Array();
$datas = Array(
'2011-08-03', '2011-08-04',
'2011-08-05', '2011-08-06',
'2011-08-07', '2011-08-08',
'2011-08-09', '2011-07-03',
'2011-07-04', '2011-07-05',
'2011-07-06', '2011-07-07',
'2011-07-08', '2011-07-09',
);
foreach( $datas as $data ){
if( $data < date( 'Y-m-d', time() ) ){
$dataRight[] = $data;
}else{
$dataLeft[] = $data;
}
}
print_r( $dataRight );
echo "----------------------\n";
print_r( $dataLeft );Obrigado.
Neste último exemplo, só é usado o array com um dado/campo.
O meu array tem vários dados (ex: id, title, date, etc), logo a comparação tem que ser feita com o acesso ao campo data.
;)
Explicando melhor
$listagem = array que tem uma lista de eventos
$arrayX=array();
$arrayY=array();
foreach( $listagem as $dados ){
// o $dados mostra-me um determinado objecto(evento)
// onde tenho $dados["date"] é onde tá o problema (penso eu)
// aqui quero aceder ao valor que está no campo date, para fazer a comparação com a dataActual
if( $dados["date"] < date('Y-m-d H:i:s') ){
$arrayX[] = $dados;
}else{
$arraY[] = $dados;
}
}
Abraço.
esquecam
$dados["date"] -- errado
$dados->date --- certo..
feito.. thanks
Você quer separar esses elementos de 2 a 2 ? como um 'ímpar/par' ?