Многомерный массив с разными ключами для форматирования данных - PullRequest
0 голосов
/ 02 октября 2018

У меня многомерный динамический массив со следующей структурой

$xData["invoice"]["no"]["data"] = "DY-13123";
$xData["invoice"]["date"]["data"] = "01-08-2018";
$xData["invoice"]["total_due"]["data"] = 56890.23;
$xData["invoice"]["due_date"]["data"] = "01-12-2018";
$xData["from"]["name"]["first"]["data"] = "Company Name, Inc";
$xData["from"]["address1"]["data"] = "12345 Sunny Road";
$xData["from"]["address2"]["data"] = "Sunnyville, CA 12345";

Я хочу разрешить пользователям форматировать данные массива, указав формат.Например, $xData["invoice"]["date"]["data"]= "01-08-2018" для этого пользователь может указать формат как тип даты и форматирование как «ГГГГ-мм-дд».Я храню эту информацию о формате в другом массиве.

$xFormat["invoice"]["date"] = array("date","YYYY-mm-dd");
$xFormat["invoice"]["total_due"] = array("currency","$");

Теперь мне нужно получить значение $ xData и применить форматирование.Я попытался получить все ключи и применить формат, но безуспешно.Пожалуйста, дайте мне знать, как это сделать.

Заранее спасибо

1 Ответ

0 голосов
/ 02 октября 2018

Что вам нужно сделать, это сначала взять строку в поле date и преобразовать ее во время, затем отформатировать ее в формате $xFormat

$time = strtotime($xData["invoice"]["date"]["data"]); //converting the date in string to seconds since January 1 1970 00:00:00 UTC
if ($time === false) { //if the date couldn't be converted to seconds
    echo "date is wrong";
} else {
    echo date($xFormat["invoice"]["date"]["date"],$time); //yes, double date fields is correct
} 

Функция strtotime преобразует строковое представление времени в секунды, что, в свою очередь, может использоваться в date .Поскольку вы установили $xFormat["invoice"]["date"] как array("date","YYYY-mm-dd"), мне пришлось использовать $xFormat["invoice"]["date"]["date"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...