我具有以下结构的多维动态数组
$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"
为此,用户可以将格式指定为日期类型,并将格式设置为“ YYYY-mm-dd”。我将此格式信息存储在另一个数组中。
$xFormat["invoice"]["date"] = array("date","YYYY-mm-dd");
$xFormat["invoice"]["total_due"] = array("currency","$");
现在,我需要获取$ xData的值并应用格式。我尝试获取所有密钥并应用格式,但没有成功。请让我知道如何 为此。
预先感谢
答案 0 :(得分:0)
您需要做的是,首先在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"]