内爆多维数组键和值

Implode Multidimensional Array Keys and Values

我有一个数组,我试图将其转换为两个字符串,一个包含日期,一个包含数据值。这是一个示例数组:

[下面的$输出数组]

Array
 (
[2019-03-19] => Array
    (
        [data_values] => 1566
    )

[2019-03-18] => Array
    (
        [data_values] => 1542
    )

[2019-03-17] => Array
    (
        [data_values] => 786
    )

[2019-03-16] => Array
    (
        [data_values] => 756
    )

)

所需的输出类似于:

$dates = '2019-03-19,2019-03-18,2019-03-17,2019-03-16';
$data_values = '1566,1542,786,756';

我试过了,它会给我 data_values 但我无法获取日期,我想是因为它是数组键?

function implode_r($g, $p) {
    return is_array($p) ?
           implode($g, array_map(__FUNCTION__, array_fill(0, count($p), $g), $p)) : 
           $p;
}

$data_values = implode_r(',', $output); 
echo $data_values;

你可以直接使用 array_keys and array_column:

$dates = implode(',', array_keys($output));
$data_values = implode(',', array_column($output, 'data_values'));

Demo on 3v4l.org

这会给你你期望的答案:

<?php
// Build strings based on array
function implode_r($output) {
    $dates = $data_values = "";
    if(is_array($output)){
        $dates=implode(',',array_keys($output));
        $data_values=implode(',',array_column($output, 'data_values')); 
    }
    return compact('dates', 'data_values');
}

// Example usage
$output = [
    "2019-03-17" => ["data_values" => 1],
    "2019-03-18" => ["data_values" => 2],
    "2019-03-19" => ["data_values" => 3],
    "2019-03-20" => ["data_values" => 4]
];
$result = implode_r($output);
echo $result['dates'];
echo $result['data_values'];