user1187
user1187

Reputation: 2198

How to use implode function manualy?

My array contain date $a1[0] day $a1[1] month $a1[2] year I want the result as year/day/month give me one solution.

Below is my code

<?php
  $a1 = array("01","10","2012");
  $result = implode("/",$a1);
  print $result;
?>

This will print 01/10/2012 but I want this result 2012/01/10. How can I take the array manualy using implode function?

How can I take year first day second and month third?

Upvotes: 1

Views: 140

Answers (4)

AdamGold
AdamGold

Reputation: 5051

You can also use a loop (manual implode):

$a1 = array("01","10","2012");
$a1_length = sizeof($a1);
$date = '';
for ($i = $a1_length; $i > 0; $i--) {
    $date .= $a1[$i] . '/';
}
$date = rtrim($date, '/');

echo $date;

Upvotes: 0

Night2
Night2

Reputation: 1153

You can't use implode alone for that matter, if you are having exactly this pattern (elements order are inverted) the use this code (YYYY/MM/DD):

$a1 = array("01", "10", "2012");
$result = implode("/", array_reverse($a1));
print $result;

Else use a regex (YYYY/MM/DD):

$a1 = array("01", "10", "2012");
$result = preg_replace('/(\d{2})\/(\d{2})\/(\d{4})/', '$3/$2/$1', implode("/", $a1));
print $result;

If you need the format of (YYYY/DD/MM) then use this one:

$a1 = array("01", "10", "2012");
$result = preg_replace('/(\d{2})\/(\d{2})\/(\d{4})/', '$3/$1/$2', implode("/", $a1));
print $result;

Upvotes: 1

JvdBerg
JvdBerg

Reputation: 21856

Use the mktime function. If you have a $timestamp, you can format is as you like with the date function:

$timestamp = mktime(0, 0, 0, $a1[1], $a1[0], $a1[2]);
echo date('y/m/d', $timestamp);

Upvotes: 1

SteeveDroz
SteeveDroz

Reputation: 6136

You can use array_reverse like this:

$result = implode("/", array_reverse($a1));

This will create a new array in the reverse order.

Upvotes: 1

Related Questions