Php AJAX请求中的数组多维化
因此,我在WordPress中创建了一个函数,用于计算和设置用户会话,并将其值存储在用户的本地存储器中。通过使用cookies,我可以使它完美地工作,当该站点在本地托管时,由于某种原因,当我将其上载到临时站点时,它就不工作了。因此,我尝试使用另一种方法实现此功能,并决定改用本地存储 函数生成的数组值有问题,我几乎花了一整天的时间来调试这个问题。它正在生成多维度而不是单个维度 这是我的功能代码:Php AJAX请求中的数组多维化,php,arrays,ajax,wordpress,Php,Arrays,Ajax,Wordpress,因此,我在WordPress中创建了一个函数,用于计算和设置用户会话,并将其值存储在用户的本地存储器中。通过使用cookies,我可以使它完美地工作,当该站点在本地托管时,由于某种原因,当我将其上载到临时站点时,它就不工作了。因此,我尝试使用另一种方法实现此功能,并决定改用本地存储 函数生成的数组值有问题,我几乎花了一整天的时间来调试这个问题。它正在生成多维度而不是单个维度 这是我的功能代码: function monitor_post_views() { $page_id = 'page'
function monitor_post_views() {
$page_id = 'page' . $_POST['page_id'];
$timestamp = time();
// 30 minutes timeout
$timeout = 1800;
// Serves as my guide for debugging, will not include in the final code
$message = '';
if ( ! empty($_POST['page_id_array']) ) {
//Checks if values from local storage exist
//Gets the stored Array coming from AJAX call
$page_id_array[] = json_decode(stripslashes($_POST['page_id_array']), true);
if ( in_array_r($page_id_array, $page_id) ) {
//Check if current page is found in array
$message = 'FOUND IN ARRAY CHECKING !!!!';
$temp= [];
$page_id_array_temp = array('id' => $page_id, 'expiration' => $timestamp, 'message' => $message);
$temp = $page_id_array_temp;
//Pushes the generated array inside the $page_id_array
array_push($page_id_array, $temp);
print_r(json_encode($page_id_array));
foreach ( $page_id_array as $page ) {
//If page is in array, check if the session is expired, if not, do nothing, if expired, update and then run the view function
}
} else {
// ID Not found in Array, Insert a new entry
$message = 'ID NOT FOUND IN ARRAY, CREATING ENTRY !!!';
$temp = [];
$page_id_array_temp = array('id' => $page_id, 'expiration' => $timestamp, 'message' => $message);
$temp = $page_id_array_temp;
//Pushes the generated array inside the $page_id_array
array_push($page_id_array, $temp);
print_r(json_encode($page_id_array));
//Set post view function here base on $_POST['page_id']
}
} else {
//Not found in local storage, need to create one
$message = 'CREATING A NEW ENTRY !!!!';
$temp = [];
$page_id_array = array('id' => $page_id, 'expiration' => $timestamp, 'message' => $message);
$temp = $page_id_array;
print_r(json_encode($temp));
//Set post view function here base on $_POST['page_id']
}
wp_die();
}
add_action('wp_ajax_monitor_post_views', 'monitor_post_views');
add_action('wp_ajax_nopriv_monitor_post_views', 'monitor_post_views');
下面是此函数生成内容的屏幕截图
下面是一个JSON示例
[[{"id":"page1202","expiration":1551125579,"message":"FOUND IN ARRAY CHECKING !!!!"},{"id":"page1206","expiration":1551125613,"message":"ID NOT FOUND IN ARRAY !!!! INSERTING ENTRY !!!"}],{"id":"page1296","expiration":1551125624,"message":"ID NOT FOUND IN ARRAY !!!! INSERTING ENTRY !!!"}]
我试图生成一个一维,但最终得到了这个。
有什么想法吗?提前感谢问题是您创建阵列的次数太多: 将$page\u id\u array和$page\u id\u array\u temp更改为
$page_id_array=new \stdClass();//no need to declare as an array
替换
$page_id_array_temp = array('id' => $page_id, 'expiration' => $timestamp, 'message' => $message);
与
也改变
$temp = [];
你可以直接使用它
//无需将$temp声明为数组
$temp=$page_id_array;
您可以添加来自$\u POST['page\u id\u array']的JSON示例吗?[{id:page1202,过期时间:1551125579,消息:在数组检查中找到!!!!,{id:page1206,过期时间:1551125613,消息:在数组中找不到id!!!!插入条目!!!}],{id:page1296,过期时间:1551125624,消息:在数组中找不到id!!!!插入条目!!!]给你,非常感谢。成功了。我创建了一个临时对象并保留了临时数组。定义对象的关键点后。我解析了它们并将其分配给$temp。我使用array\u push将其附加到现有数组上。
$temp=$page_id_array;