我已经尝试了很多方法来实现这一目标,但似乎都没有工作。 我使用PHP 7.4
假设我有这个:
$othervar = array(); $var = array(1, 2, 3); $othervar = $var;
这对我不起作用,var_dump($ othervar)返回
array(1) { [0]=> string(5) "Array" }
我曾尝试使用array_push,我不想使用array_merge,因为我需要将两个数组分配给一个变量。这是我需要做的:
$variable = array(); $variable["type1"] = $data; //Array 1 $variable["type2"] = $otherData; //Array 2
这也不起作用。
[Barmar向我展示了here,它可以正常工作,所以我必须在其他地方做错了。
我将解释整个代码:
要登录到我的网页,我通过jQuery通过AJAX请求发送了一个请求。
function SendData(data, btn, actionOnSuccess, shouldReplace = false, elementToReplace = "", getServerData = true, htmlData = "") {
if (!loading)
{
ToggleLoading();
data.push({name: "action", value: $(btn).data("action")});
data.push({name: "attr", value: JSON.stringify($(btn).data("attr"))});
$.post("SendRequest.php", data)
.done(function (r) {
if (!r.success)
//ajax sent and received but it has an error
else
//ajax sent and it was successfull
})
.fail(function () {
//ajax call failed
});
}
else {
//This determines if some request is already executing or not.
}
}
“ action”和“ attr”是我发送的加密值,用于引用系统上的某些操作(我将在此处显示更多内容:]]
代码从AJAX到SendRequest.php
,在这里它执行一个动作,比如说登录。SendRequest.php的第一行是:
require "Functions.php"; $apiAction = Decrypt($_POST["action"]); //Action $actionData = json_decode(Decrypt($_POST["attr"])); //Attr $finalPost = $_POST; foreach ($actionData as $key => $value) { $finalPost[$key] = $value; } $finalPost["loggedin_ip"] = $_SERVER['REMOTE_ADDR']; $result = APICall($apiAction, $finalPost);
然后,这是我要实现与API通讯的目的:
function APICall($option, $data = array()) { session_start(); $post = array("uData" => ArrayToAPI($_SESSION), "uPost" => ArrayToAPI($data)); $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_URL, "https://apiurl?" . $option); //option is the ACTION to perform on API (let's say "login") it is an encrypted word on a data-attr atribute on every form/button that creates a communication with API. $returned = curl_exec($ch); curl_close ($ch); $newData = json_decode($returned, true); return $newData; } function ArrayToAPI($array) { $toApiData = array(); foreach ($array as $key=>$value) { if (is_array($value)) $toApiData[$key] = ArrayToAPI($value); else $toApiData[$key] = Encrypt($value); } return $toApiData; }
这是我在API方面拥有的:
ob_start(); var_dump($_POST); $result = ob_get_clean(); $api->EndRequest(false, array("errorDesc" => "a - " . $result)); function EndRequest(bool $task_completed, array $data = array()) { $jsonData = array(); $jsonData['success'] = $task_completed; $jsonData['data'] = $data; header('Content-type: application/json; charset=utf-8'); echo json_encode($jsonData, JSON_FORCE_OBJECT); exit; }
此总是返回
array(2) { ["uData"]=> string(5) "Array" ["uPost"]=> string(5) "Array" }
我希望我现在更清楚了,谢谢。
我已经尝试了很多方法来实现这一目标,但似乎都没有效果。我正在使用PHP 7.4,让我说:$ othervar = array(); $ var = array(1、2、3); $ othervar = $ var;这不......
问题在于,由于此行,请求从您的代码中发出: