我如何解决“array_merge参数不是数组”?

时间:2015-05-16 08:34:41

标签: php array-merge

我收到的错误表明:

  

array_merge():参数#2不是数组

我正在尝试解决它,但我不确定还有什么可以尝试。这是我执行的代码:

    $config = array();
    $config['base_url'] = Application::getInstance()->request->getRootUri();
    $config['public_url'] = $config['base_url'] . '/public';
    $config['bower_components_url'] = $config['public_url'] . '/bower_components';

    $app_config = array();
    $app_config = require_once 'app/config/application.php';

    $full_config = array_merge($config, $app_config, $data);

参数app config需要此文件:

return array (

    'debug' => true,

    'app_name' => 'Name',

    'app_author' => 'Author',

    'app_url' => '',

    'session_prefix' => '',

    'session_secret' => '',

);

有人可以帮我理解我收到此错误的原因吗?

3 个答案:

答案 0 :(得分:0)

您需要在此配置文件的开头添加php开启标记:

<?php
return array (

    'debug' => true,

    'app_name' => 'Name',

    'app_author' => 'Author',

    'app_url' => '',

    'session_prefix' => '',

    'session_secret' => '',

);

启用错误报告并检查您的路径是否正确。

答案 1 :(得分:-1)

问题是您将$ app_config定义为数组,然后将其重新定义为变量。试试这个

$app_config = array();
$app_config[] = require_once 'app/config/application.php';

答案 2 :(得分:-1)

执行此操作:$app_config = require_once 'app/config/application.php';将返回一个对象(当然不是数组)。我想。

我认为这种方法更具可定制性。

应用程序/配置/ functions.php的

//this will  be inside functions.php
function appConfig() {
    return array (
            'debug' => true,
            'app_name' => 'Name',
            'app_author' => 'Author',
            'app_url' => '',
            'session_prefix' => '',
            'session_secret' => '',
            );
}

你的主要php文件

require_once 'app/config/functions.php';

// your other code
$app_config = appConfig();

$full_config = array_merge($config, $app_config, $data);