Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AJAX请求中的数组多维化_Php_Arrays_Ajax_Wordpress - Fatal编程技术网

Php AJAX请求中的数组多维化

Php AJAX请求中的数组多维化,php,arrays,ajax,wordpress,Php,Arrays,Ajax,Wordpress,因此,我在WordPress中创建了一个函数,用于计算和设置用户会话,并将其值存储在用户的本地存储器中。通过使用cookies,我可以使它完美地工作,当该站点在本地托管时,由于某种原因,当我将其上载到临时站点时,它就不工作了。因此,我尝试使用另一种方法实现此功能,并决定改用本地存储 函数生成的数组值有问题,我几乎花了一整天的时间来调试这个问题。它正在生成多维度而不是单个维度 这是我的功能代码: function monitor_post_views() { $page_id = 'page'

因此,我在WordPress中创建了一个函数,用于计算和设置用户会话,并将其值存储在用户的本地存储器中。通过使用cookies,我可以使它完美地工作,当该站点在本地托管时,由于某种原因,当我将其上载到临时站点时,它就不工作了。因此,我尝试使用另一种方法实现此功能,并决定改用本地存储

函数生成的数组值有问题,我几乎花了一整天的时间来调试这个问题。它正在生成多维度而不是单个维度

这是我的功能代码:

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;