PHP 多维数组空值

PHP Multidimensional Array Empty Values

我正在尝试使用 ACF(高级自定义字段)table 数据和 header 行,并创建一个 JSON object 数组,其中每个object 被标记为 header 值,列作为该值的数组...我的结果是空的,我不确定为什么。

function get_rates_table(){
    $table = get_field('rates_table', 'options');
    $head = [];
    $rows = [];
    $each = [];
    if($table){

        if($table['header']){
            foreach ($table['header'] as $h) {
                array_push($head, $h['c']);
            }
        }

        if ($table['body']) {
            foreach ($table['body'] as $tr) {
                foreach ($tr as $td) {
                    $each[] = $td['c'];
                }
            $rows[] = $each;
            unset($each);
            }
        }

        foreach ($head as $key => $value) {
            $value = [];
            foreach($rows as $k => $v){
                foreach ($v as $x => $y) {
                    if($x == $key){
                        array_push($value, $y);
                    }
                }
            }
        }
    }

    return $head;
}

输出如下:

"rates_table": [
    "Term",
    "Rate Loan",
    "Rate Refi"
],

原始 ACF 数组如下所示:

Array(
[header] => Array
    (
        [0] => Array
            (
                [c] => Term
            )

        [1] => Array
            (
                [c] => Rate Loan
            )

        [2] => Array
            (
                [c] => Rate Refi
            )

    )

[body] => Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [c] => 12
                    )

                [1] => Array
                    (
                        [c] => 3
                    )

                [2] => Array
                    (
                        [c] => 3.5
                    )

            )

        [1] => Array
            (
                [0] => Array
                    (
                        [c] => 24
                    )

                [1] => Array
                    (
                        [c] => 3.1
                    )

                [2] => Array
                    (
                        [c] => 3.8
                    )

            )    etc...

有很多代码我不愿意进行故障排除,但就其中一个而言,您似乎只返回不包含任何其他值的 $head。为了简单起见:

$header = array_column($array['header'], 'c');

foreach($array['body'] as $values) {
    $result[] = array_combine($header, array_column($values, 'c'));
}
  • 从数组中提取 headers
  • 循环 body 并提取值
  • 将 header 组合为键,将值组合为值

这将产生如下内容:

Array
(
    [0] => Array
        (
            [Term] => 12
            [Rate loan] => 3
            [Rate refi] => 3.5
        )

    [1] => Array
        (
            [Term] => 24
            [Rate loan] => 3.1
            [Rate refi] => 3.8
        )

)

使用相同的 header 可以不同地构造数组:

foreach($header as $k => $h) {
    $result[$h] = array_column(array_column($array['body'], $k), 'c');
}
  • 循环 headers 暴露数字键
  • 使用 header 值作为键并使用 header 键提取值

这将产生如下内容:

Array
(
    [Term] => Array
        (
            [0] => 12
            [1] => 24
        )

    [Rate loan] => Array
        (
            [0] => 3
            [1] => 3.1
        )

    [Rate refi] => Array
        (
            [0] => 3.5
            [1] => 3.8
        )

)