php中的非法偏移类型

时间:2016-05-20 08:32:19

标签: php

我正在尝试从这个脚本中获取菜单,但是当我尝试这样做时,它会说非法偏移类型

CREATE OR REPLACE FUNCTION jsonb_merge(pCurrentData jsonb, pMergeData jsonb, pExcludeKeys text[])
RETURNS jsonb IMMUTABLE LANGUAGE sql
AS $$
    SELECT json_object_agg(key,value)::jsonb
    FROM (
        WITH to_merge AS (
            SELECT * FROM jsonb_each(pMergeData) 
        )
        SELECT *
        FROM jsonb_each(pCurrentData)
        WHERE key NOT IN (SELECT key FROM to_merge)
     AND ( pExcludeKeys ISNULL OR key <> ALL(pExcludeKeys))
        UNION ALL
        SELECT * FROM to_merge
    ) t;
$$;

1 个答案:

答案 0 :(得分:1)

你的语法错了。 print_r的输出,例如只是一个表示,以帮助您了解数组的内容。这不是有效的代码。

首先,让我解开你现有的代码:

$menu_issems = array(
    [0] => array(
        [id] => "1", 
        [url] => 'http://www.mixcms.dev', 
        [parent_id] => "0", 
        [name] => 'Accueil', 
        [order] => "0"
    ), 
    [1] => array(
        [id] => "32", 
        [url] => 'http://www.mixcms.dev/nos-formations.html', 
        [parent_id] =>"0", 
        [name] => 'Nos formations', 
        [order] => "10"
    ), 
    [2] => array(
        [id] => "33", 
        [url] => 'http://www.mixcms.dev/bac-professionnel-gestion-adnimistration.html', 
        [parent_id] => "32", 
        [name] => 'Bac professionnel : GESTION ADNIMISTRATION', 
        [order] => "20"
    ), 
    [3] => array(
        [id] => 34, 
        [url] => 'http://www.mixcms.dev/bac-professionnel-arcu.html', 
        [parent_id] => 32, 
        [name] => 'Bac professionnel : ARCU', 
        [order] => "30"
    ), 
    [4] => array(
        [id] => "35", 
        [url] => 'http://www.mixcms.dev/bac-professionnel-commerce.html', 
        [parent_id] => "32", 
        [name] => 'Bac professionnel : COMMERCE', 
        [order] => "40"
    ), 
    [5] => array(
        [id] => "36", 
        [url] => 'http://www.mixcms.dev/les-marques-partenaires.html', 
        [parent_id] => 32, 
        [name] => 'Bac professionnel : VENTE', 
        [order] => 50
    ), 
    [6] => array(
        [id] => "54", 
        [url] => 'http://www.mixcms.dev/bac-professionnel-option-comptabilite-et-finance-d-rsquo-entreprise.html', 
        [parent_id] => "32", 
        [name] => 'Bac professionnel : OPTION COMPTABILITÉ ET FINANCE D’ENTREPRISE', 
        [order] => "60"
    ), 
    [7] => array(
        [id] => "55", 
        [url] => 'http://www.mixcms.dev/bac-technologique-communication-et-gestion-des-ressources-humaines.html', 
        [parent_id] => "32", 
        [name] => 'Bac technologique : COMMUNICATION ET GESTION DES RESSOURCES HUMAINES', 
        [order] => "70"
    ), 
    [8] => array(
        [id] => "39", 
        [url] => 'http://www.mixcms.dev/presentation.html', 
        [parent_id] => 0, 
        [name] => 'Présentation', 
        [order] => 80
    ), 
    [9] => array(
        [id] => 40, 
        [url] => 'http://www.mixcms.dev/historique.html', 
        [parent_id] => "39", 
        [name] => 'Historique', 
        [order] => "90"
    ), 
    [10] => array(
        [id] => "41", 
        [url] => 'http://www.mixcms.dev/nos-atouts.html', 
        [parent_id] => "39", 
        [name] => 'Nos atouts', 
        [order] => "100"
    ), 
    [11] => array(
        [id] => "56", 
        [url] => 'http://www.mixcms.dev/notre-projet-educatif.html', 
        [parent_id] => "39", 
        [name] => 'Notre Projet Éducatif', 
        [order] => "110"
    ), 
    [12] => array(
        [id] => "38", 
        [url] => 'http://www.mixcms.dev/inscriptions.html', 
        [parent_id] => "0", 
        [name] => 'Inscriptions', 
        [order] => "120"
    ), 
    [13] => array(
        [id] => "57", 
        [url] => 'http://www.mixcms.dev/reglement-scolaire.html', 
        [parent_id] => "38", 
        [name] => 'Règlement scolaire', 
        [order] => "130"
    ), 
    [14] => array(
        [id] => "58", 
        [url] => 'http://www.mixcms.dev/reglement-financier.html', 
        [parent_id] => "38", 
        [name] => 'Règlement financier', 
        [order] => "140"
    ), 
    [15] => array(
        [id] => "37", 
        [url] => 'http://www.mixcms.dev/actualites.html', 
        [parent_id] => "0", 
        [name] => 'Actualités', 
        [order] => "150"
    ), 
    [16] => array(
        [id] => "42", 
        [url] => 'http://www.mixcms.dev/contact.html', 
        [parent_id] => "0", 
        [name] => 'Contact', 
        [order] => "160"
    ), 
    [17] => array(
        [id] => "59", 
        [url] => 'http://www.mixcms.dev/acces-pronote.html', 
        [parent_id] => "0", 
        [name] => 'Accès ProNote', 
        [order] => "170"
    )
);

[]出了什么问题。对于数字,只需删除它们即可。对于字符串,请使用引号,如下所示:

$menu_issems = array(
    0 => array(
        "id" => "1", 
        "url" => 'http://www.mixcms.dev', 
        "parent_id" => "0", 
        "name" => 'Accueil', 
        "order" => "0"
    ), 
    1 => array(
        "id" => "32", 
        "url" => 'http://www.mixcms.dev/nos-formations.html', 
        "parent_id" =>"0", 
        "name" => 'Nos formations', 
        "order" => "10"
    ), 
    2 => array(
        "id" => "33", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-gestion-adnimistration.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : GESTION ADNIMISTRATION', 
        "order" => "20"
    ), 
    3 => array(
        "id" => 34, 
        "url" => 'http://www.mixcms.dev/bac-professionnel-arcu.html', 
        "parent_id" => 32, 
        "name" => 'Bac professionnel : ARCU', 
        "order" => "30"
    ), 
    4 => array(
        "id" => "35", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-commerce.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : COMMERCE', 
        "order" => "40"
    ), 
    5 => array(
        "id" => "36", 
        "url" => 'http://www.mixcms.dev/les-marques-partenaires.html', 
        "parent_id" => 32, 
        "name" => 'Bac professionnel : VENTE', 
        "order" => 50
    ), 
    6 => array(
        "id" => "54", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-option-comptabilite-et-finance-d-rsquo-entreprise.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : OPTION COMPTABILITÉ ET FINANCE D’ENTREPRISE', 
        "order" => "60"
    ), 
    7 => array(
        "id" => "55", 
        "url" => 'http://www.mixcms.dev/bac-technologique-communication-et-gestion-des-ressources-humaines.html', 
        "parent_id" => "32", 
        "name" => 'Bac technologique : COMMUNICATION ET GESTION DES RESSOURCES HUMAINES', 
        "order" => "70"
    ), 
    8 => array(
        "id" => "39", 
        "url" => 'http://www.mixcms.dev/presentation.html', 
        "parent_id" => 0, 
        "name" => 'Présentation', 
        "order" => 80
    ), 
    9 => array(
        "id" => 40, 
        "url" => 'http://www.mixcms.dev/historique.html', 
        "parent_id" => "39", 
        "name" => 'Historique', 
        "order" => "90"
    ), 
    10 => array(
        "id" => "41", 
        "url" => 'http://www.mixcms.dev/nos-atouts.html', 
        "parent_id" => "39", 
        "name" => 'Nos atouts', 
        "order" => "100"
    ), 
    11 => array(
        "id" => "56", 
        "url" => 'http://www.mixcms.dev/notre-projet-educatif.html', 
        "parent_id" => "39", 
        "name" => 'Notre Projet Éducatif', 
        "order" => "110"
    ), 
    12 => array(
        "id" => "38", 
        "url" => 'http://www.mixcms.dev/inscriptions.html', 
        "parent_id" => "0", 
        "name" => 'Inscriptions', 
        "order" => "120"
    ), 
    13 => array(
        "id" => "57", 
        "url" => 'http://www.mixcms.dev/reglement-scolaire.html', 
        "parent_id" => "38", 
        "name" => 'Règlement scolaire', 
        "order" => "130"
    ), 
    14 => array(
        "id" => "58", 
        "url" => 'http://www.mixcms.dev/reglement-financier.html', 
        "parent_id" => "38", 
        "name" => 'Règlement financier', 
        "order" => "140"
    ), 
    15 => array(
        "id" => "37", 
        "url" => 'http://www.mixcms.dev/actualites.html', 
        "parent_id" => "0", 
        "name" => 'Actualités', 
        "order" => "150"
    ), 
    16 => array(
        "id" => "42", 
        "url" => 'http://www.mixcms.dev/contact.html', 
        "parent_id" => "0", 
        "name" => 'Contact', 
        "order" => "160"
    ), 
    17 => array(
        "id" => "59", 
        "url" => 'http://www.mixcms.dev/acces-pronote.html', 
        "parent_id" => "0", 
        "name" => 'Accès ProNote', 
        "order" => "170"
    )
);

但是,由于你的密钥是递增的数字,你可以完全省略它们:

$menu_issems = array(
    array(
        "id" => "1", 
        "url" => 'http://www.mixcms.dev', 
        "parent_id" => "0", 
        "name" => 'Accueil', 
        "order" => "0"
    ), 
    array(
        "id" => "32", 
        "url" => 'http://www.mixcms.dev/nos-formations.html', 
        "parent_id" =>"0", 
        "name" => 'Nos formations', 
        "order" => "10"
    ), 
    array(
        "id" => "33", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-gestion-adnimistration.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : GESTION ADNIMISTRATION', 
        "order" => "20"
    ), 
    array(
        "id" => 34, 
        "url" => 'http://www.mixcms.dev/bac-professionnel-arcu.html', 
        "parent_id" => 32, 
        "name" => 'Bac professionnel : ARCU', 
        "order" => "30"
    ), 
    array(
        "id" => "35", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-commerce.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : COMMERCE', 
        "order" => "40"
    ), 
    array(
        "id" => "36", 
        "url" => 'http://www.mixcms.dev/les-marques-partenaires.html', 
        "parent_id" => 32, 
        "name" => 'Bac professionnel : VENTE', 
        "order" => 50
    ), 
    array(
        "id" => "54", 
        "url" => 'http://www.mixcms.dev/bac-professionnel-option-comptabilite-et-finance-d-rsquo-entreprise.html', 
        "parent_id" => "32", 
        "name" => 'Bac professionnel : OPTION COMPTABILITÉ ET FINANCE D’ENTREPRISE', 
        "order" => "60"
    ), 
    array(
        "id" => "55", 
        "url" => 'http://www.mixcms.dev/bac-technologique-communication-et-gestion-des-ressources-humaines.html', 
        "parent_id" => "32", 
        "name" => 'Bac technologique : COMMUNICATION ET GESTION DES RESSOURCES HUMAINES', 
        "order" => "70"
    ), 
    array(
        "id" => "39", 
        "url" => 'http://www.mixcms.dev/presentation.html', 
        "parent_id" => 0, 
        "name" => 'Présentation', 
        "order" => 80
    ), 
    array(
        "id" => 40, 
        "url" => 'http://www.mixcms.dev/historique.html', 
        "parent_id" => "39", 
        "name" => 'Historique', 
        "order" => "90"
    ), 
    array(
        "id" => "41", 
        "url" => 'http://www.mixcms.dev/nos-atouts.html', 
        "parent_id" => "39", 
        "name" => 'Nos atouts', 
        "order" => "100"
    ), 
    array(
        "id" => "56", 
        "url" => 'http://www.mixcms.dev/notre-projet-educatif.html', 
        "parent_id" => "39", 
        "name" => 'Notre Projet Éducatif', 
        "order" => "110"
    ), 
    array(
        "id" => "38", 
        "url" => 'http://www.mixcms.dev/inscriptions.html', 
        "parent_id" => "0", 
        "name" => 'Inscriptions', 
        "order" => "120"
    ), 
    array(
        "id" => "57", 
        "url" => 'http://www.mixcms.dev/reglement-scolaire.html', 
        "parent_id" => "38", 
        "name" => 'Règlement scolaire', 
        "order" => "130"
    ), 
    array(
        "id" => "58", 
        "url" => 'http://www.mixcms.dev/reglement-financier.html', 
        "parent_id" => "38", 
        "name" => 'Règlement financier', 
        "order" => "140"
    ), 
    array(
        "id" => "37", 
        "url" => 'http://www.mixcms.dev/actualites.html', 
        "parent_id" => "0", 
        "name" => 'Actualités', 
        "order" => "150"
    ), 
    array(
        "id" => "42", 
        "url" => 'http://www.mixcms.dev/contact.html', 
        "parent_id" => "0", 
        "name" => 'Contact', 
        "order" => "160"
    ), 
    array(
        "id" => "59", 
        "url" => 'http://www.mixcms.dev/acces-pronote.html', 
        "parent_id" => "0", 
        "name" => 'Accès ProNote', 
        "order" => "170"
    )
);