глобальный ассоциативный массив php null при включении из ajax - PullRequest
0 голосов
/ 14 марта 2019

У меня проблема, которую я не могу понять.

У меня есть файл, объявляющий некоторые массивы и некоторые функции: passerelles / zoho_API_START.php

вы можете увидеть объявление массива в началефайл:

$arrayProfils = array(
    "INVESTISSEMENT" => "Achat invest",
    "RESIDENCE PRINCIPALE" => "Achat RP"
);

затем функция

function CRM_lead_upsert ($lead, $fichierlog) {

    $logZoho = fopen($fichierlog, "a+");

    global $arrayType;
    global $arrayProfils;
    global $arraySourceLibelles;

    //fwrite($logZoho, "debut print 2 tableau arraySourceLibelles\r\n");
    //fwrite($logZoho, var_export($arraySourceLibelles, true));
    //fwrite($logZoho, "fin print 2 tableau arraySourceLibelles\r\n");

    try{    
        [...]
        $indexTMP = $lead['typeprojet'];
        $profil = $arrayProfils[$indexTMP];
        fwrite($logZoho, "Lead Upsert profil=indexTMP=".$indexTMP."\r\n");
        fwrite($logZoho, "Lead Upsert profil=arrayProfils[indexTMP]=".$profil."\r\n");
        fwrite($logZoho, var_export($arrayProfils, true)."\r\n");       
        $record->setFieldValue("Lead_profile", $profil);
        [...]
    } catch (Exception $e) {
        fwrite($logZoho, date("Y-m-d H:i:s")." *** Exception insertion lead line 543 zoho api ***\r\n");
        fwrite($logZoho, date("Y-m-d H:i:s")." ".$e." \r\n");
    }

    fclose($logZoho);
}

проблема в том, что когда я вызываю это в простой файл php (zoho_API_OK_Leads_insert.php), все в порядке (мойvar_export ($ arrayProfils, true) в файле журнала отображает правильные значения):

<?php
ini_set('display_errors',1);

//include("zoho_API_START.php");
include("passerelles/zoho_API_START.php");

if (true) {
    $lead['idProgramme'] = 899;
    //$idLot = "21669"; 
    //$lead['idAnnonce'] = 21670;
    $lead['typeprojet']="INVESTISSEMENT";
    $lead['nom']="Toto";
    $lead['prenom']="";
    $lead['telephone']="0605060506";
    $lead['email']="test@toto.fr";
    $lead['type'] = 1;
    $lead['cpdemande']="69200";
    $lead['nbpieces'] = 3;
    $lead['budgetmax'] = 250000;
    $lead['infosComplementaires']="infos.";
    $lead['adresse'] = "";
    $lead['cpresidence'] ="";
    $lead['ville'] ="Lyon";
    $lead['impots']="";
    $lead['utm_source']="";
    $lead['utm_campaign']="";
    $lead['Lead_Status'] = "Non attribué";
    CRM_lead_upsert ($lead, "admin/00_logZohoAPI.txt");
}


echo "c'est terminé<br>";


?>

, но когда я вызываю тот же код (точно такой же, из той же директории) в файле AJAXмой var_export ($ arrayProfils, true) записывается в файл журнала как ноль.См. Код из файла ajax (ajax_formPOST.php):

include("passerelles/zoho_API_START.php");
/************************
// POUR LE CRM DEBUT
************************/
CRM_lead_upsert ($data, "admin/00_logZohoAPI.txt"); 
/************************
// POUR LE CRM FIN
************************/   

Единственное отличие состоит в том, что я вызываю ajax_formPOST.php через запрос xhr с методом post.Когда я делаю это, мой ассоциативный массив равен нулю.У меня есть другие массивы, которые не являются ассоциативными (целое число в качестве ключа), которые работают без каких-либо проблем, даже через ajax.Я не могу понять, в чем проблема.

обратите внимание, что мне не нужен патч (лейкопластырь типа «измени массив и сделай то же самое с целочисленными ключами»), но я хочу понять, что происходитВот.Если у кого-то есть подсказка ...

Спасибо за ваше время и хорошего дня.


Нашли что-то !!

если я объявлю свои массивы подобными:

$arrayProfils = array(
    "INVESTISSEMENT" => "Achat invest",
    "RESIDENCE PRINCIPALE" => "Achat RP"
);
$GLOBALS['arrayProfils'] = $arrayProfils;

затем в моей функции и с помощью ajax-вызова $ arrayProfils содержит значения и больше не имеет значение NULL.

Существует подтип, который я до сих пор не могу понять ... (и я все еще слушаю кого-то, кто может объяснить мне ...)

...