在php

时间:2016-03-24 05:18:03

标签: php

我有一个如下构建的数组

foreach($details as $data)
{
    $loans[] = [
            'name' => 'Details',
            [
                'name' => 'id',
                'value' => 1
            ],
            [
                'name' => 'Date',
                'value' => '2015'
            ],
            [
                'name' => 'Purpose',
                [
                    'name' => 'Code',
                    'value' => 123
                ]
            ],
            getFees($data)
        ];
}

我需要使用fees函数中的getFees,并将这些值设置为与' name'相同的级别。 => '详细'上方。

private function getFees($data)
{
    foreach($data as $item){
        $values[] = [
            'name' => 'type',
            'value' => 'Interest'
        ];
    }
    return $values;
}

所以上面会产生以下结果:

Array
(
    [name] => Details
    [0] => Array
    (
        [name] => Details
        [0] => Array
            (
                [name] => id
                [value] => 1
            )

        [1] => Array
            (
                [name] => Date
                [value] => 2015
            )
         [2] => Array
            (
                [name] => Purpose
                [0] => Array
                 (
                      [name] => Code 
                      [value] => 123
                 )
            )
          [3] => Array
            (
                [0] => Array
                    (
                        [name] => Type
                        [value] => Interest

                    )
            )
      )
 )

但是我不希望那个[3]阵列更深层次,我只想要:

 Array
(
    [name] => Details
    [0] => Array
    (
        [name] => Details
        [0] => Array
            (
                [name] => id
                [value] => 1
            )

        [1] => Array
            (
                [name] => Date
                [value] => 2015
            )
         [2] => Array
            (
                [name] => Purpose
                [0] => Array
                 (
                      [name] => Code 
                      [value] => 123
                 )
         [3] => Array
           (
                 [name] => Type
                 [value] => Interest
           )          
     )
 )

显然我错过了一些东西 - 如果我在循环外尝试执行array_merge,那么fees数组就在Details数组之外。

如果getFees函数只将数组设置为一个单独的元素,那么它工作正常,但我需要允许多个元素,因此$values[]赋值。

如何按上述要求制作阵列?

1 个答案:

答案 0 :(得分:1)

您目前编写它的方式,getFees()必须返回多个值才能获得所需的数组。由于函数只能返回一个函数,因此您需要重写代码。

我建议您从$ loans数组中取出getFees()调用,然后调用它,将结果与$ loans数组合并。

foreach($datum as $data){
    $temp = array(
        // your data
    );

    $temp = array_merge($temp, getFees($data));

    $loans[] = $temp;
}