在描述问题之前,请原谅任何不正确的术语和对对象而不是数组的意外引用,反之亦然,我还没有完全跟上这方面的速度,但正在努力解决它。
我在 PHP
中将以下数组保存为 session 变量:
{"CategoryF":[],"CategoryA":["生活","那里","人","土地","家庭"],"CategoryC":["各种"]}
将图像网格中的缩略图拖入新顺序后,它会执行 javascript
中的函数,并使用 调用
。它当前仅检索 session 数组的最新版本。稍后将采取必要的步骤将更新后的数组保存回 session 变量和数据库:PHP
脚本ajax
var sorty = Sortable.create(thumbcontainer, {
animation: 250,
draggable: "img",
dataIdAttr: 'id',
onUpdate: function (/**Event*/evt) {
var orderList = sorty.toArray();
var catsArray =
$.ajax({
type: 'POST',
url: 'includes/proc_cats.php',
dataType: 'json'
}).done(function(returnedCatsArray) {
console.log(returnedCatsArray);
});
console.log('Dragged. Order is: ' + orderList);
}
});
proc_cats.php
<?php
// Access the existing session
session_start();
// $catsArray is a session variable, in the format as above.
$catsArray = json_encode($_SESSION['categoriesPics']);
echo $catsArray;
?>
var
orderList 将生成一个字符串,其中每个缩略图按 id 排列,并以逗号分隔:'42,35,95,12,57 '
。
控制台将 PHP
数组显示为 javascript
数组,但顺序不同。我希望能够将包含订单的字符串插入数组并将其保存回数据库中。它将与其相关类别相关联,类似于:
{"CategoryF":[],"CategoryA":["生活":["23,74,47,12,86,83,12"],"那里","人","土地","家庭"],"CategoryC":["各种"]}
但不能丢失顺序,因为网站的其他部分使用 array_keys
通过索引引用数组。控制台产生:
Object:
CategoryA:Array[0]
CategoryC:Array[0]
CategoryF:Array[5]
我是不是错过了什么?我相信整个数组是一个对象而不是数组,因为它没有任何索引,而子类别有,并且它们以数组的形式呈现。 PHP
中的 array_keys
已经足够简单地解决到目前为止在网站其他区域的 PHP 端的任何索引问题,但我想知道是否有解决方案javascript
方面也同样简单吗?子类别目前有索引只是因为我还没有与它们关联和 orderList,所以我不会尝试不回溯并为数组构建索引,因为这会变得很困难(除非有一种简单的方法可以做到这一点,我忽略了)。
(这是我一小时前提出的问题的更具体版本,由于过于宽泛,我现在已将其删除)。
最佳答案
我相信您对“关联数组”和“数组”这两个术语有一点困惑。一个 php 关联数组对应一个 javascript 对象。 returnedCatsArray 的访问方式应与 $catsArray 类似。 IE。带 key 。如果这些键之一返回一个实际的数组,您就可以对其进行索引。
php array_keys 在 JavaScript 中将是 Object.keys(returnedCatsArray)。
关于关联 PHP 数组中的 Javascript 数组/对象顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29883917/