Как поместить перенастроенный массив в другой возвращаемый массив? - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть два файла, которые возвращают два массива.

Первый:

<?php
return [
    "cats" => [
        [
            'id' => 1,
            "title" => 'qwer',
        ],
        [
            'id' => 2,
            "title" => 'asdf',
        ]
    ]
]

Второй:

<?php
return [
    "fixtures" => [
            include "file1.php",
            "dogs" => [
                [
                    'id' => 1,
                    "title" => 'qwer',
                ],
            ],
            "pigs" => [
                [
                    'id' => 1,
                    "title" => 'qwer',
                ],
            ],
        ]
]

Массив из первого файла должен быть помещен в массив во втором файле. Но если я делаю это с помощью include, он помещает file1. php с внешними скобками, и я получаю это:

<?php
return [
    "fixtures" => [
            [
                 "cats" => [
                         [
                             'id' => 1,
                             "title" => 'qwer',
                         ],
                         [
                             'id' => 2,
                             "title" => 'asdf',
                         ]
                  ]
            ],
            "dogs" => [
                [
                    'id' => 1,
                    "title" => 'qwer',
                ],
            ],
            "pigs" => [
                [
                    'id' => 1,
                    "title" => 'qwer',
                ],
            ],
        ]
]

Как я могу поместить массив из file1 без этих внешних скобок?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2020

Вы должны объединить включенные данные в основной массив (array_merge()), самый простой способ - создать существующие данные и затем добавить включенные данные ...

$c= [
    "fixtures" => [
        "dogs" => [
            [
                'id' => 1,
                "title" => 'qwer',
            ],
        ],
        "pigs" => [
            [
                'id' => 1,
                "title" => 'qwer',
            ],
        ],
    ]
];

$c['fixtures'] = array_merge($c['fixtures'], include "abc.php");

return $c;
0 голосов
/ 20 апреля 2020

Я думаю, что этот синтаксис с include не будет работать должным образом - может работать сейчас, но очень трудно проверить, нет ли ошибок в массивах. Вы должны использовать array_merge. Я думаю, что животные должны быть вместе:

$array1 = include('file0.php');
$array2 = include('file1.php');
if (is_array($array1) && is_array($array2)) {
  $array1['fixtures'] = array_merge($array1['fixtures'], $array2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...