为嵌套数组赋值变量并将其拆分

时间:2016-10-18 05:30:04

标签: php arrays

我正在获取嵌套数组回复。它包含我希望打破它的日期,时间和日期。我怎么能这样做。

这是我的回复

Array
(
    [code] => 202
    [message] => Accepted
    [data] => Array
        (
            [result] => Array
                (
                    [15:45~31-10-2016 Mon] => Array
                        (
                            [Sday] => 
                            [Ttime] => 15:45
                            [Smonth] => 

“[15:45~31-10-2016 Mon] =>数组”如何分配变量以及如何将其分解为日期,日期和时间变量

3 个答案:

答案 0 :(得分:0)

如果结果数组中只有单个元素,请使用extractexplode从man数组中检索值:类似于 -

$result = $array['data']['result'];
$date = key($result);
$day = extract($result[$date]);

var_dump($date); // 15:45~31-10-2016 Mon

var_dump($Ttime); // will output 15:45
$date = explode(' ', $date);
$dateString = substr($date[0], strpos($date[0], "{$Ttime}~") + 1); //31-10-2016
$week = $date[1]; // var_dump($week); will give `Mon`

答案 1 :(得分:0)

正如穆罕默德对你的问题的评论所述

您应该使用preg_split功能。

$str = key($array['data']['result']); // 15:45~31-10-2016 Mon
$res = preg_split("/[~\s]/", $str);
echo '<pre>'; print_r($res);

<强>输出: -

Array
(
    [0] => 15:45
    [1] => 31-10-2016
    [2] => Mon
)

答案 2 :(得分:0)

假设:

$result = array(
    'code' => '202',
    'message' => 'Accepted',
    'data' => array(
        'result' => array(
            '15:45~31-10-2016 Mon' => array(
                'Sday' => '',
                'Ttime' => '15:45',
                'Smonth' => ''
            )
        )
    )
);

你可以这样做:

$data = $result['data']['result'];
$dateKey = key($data);
$dateString = preg_split("/[~\s]/", $dateKey);
$date = array(
    'day' => $dateString[2],
    'date' => $dateString[1],
    'time' => $dateString[0]
);
var_dump($date);

或者这个:

$data = $result['data']['result'];
$dateKey = key($data);
$dateString = preg_replace("/[~\s]/", ' ', $dateKey);
$dateObj = DateTime::createFromFormat('H:i d-m-Y D', $dateString);
$date = array(
    'day' => $dateObj->format('D'),
    'date' => $dateObj->format('m-d-Y'),
    'time' => $dateObj->format('H:i')
);
var_dump($date);