У меня проблема, которую я не могу понять.
У меня есть файл, объявляющий некоторые массивы и некоторые функции: 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.
Существует подтип, который я до сих пор не могу понять ... (и я все еще слушаю кого-то, кто может объяснить мне ...)