Javascript 美元。每个不';不尊重数组的顺序
我试图在PHP中排序一个多维数组,然后将其传递到我的javascript文件以显示它。我使用函数Javascript 美元。每个不';不尊重数组的顺序,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我试图在PHP中排序一个多维数组,然后将其传递到我的javascript文件以显示它。我使用函数$.map和$来显示数据。问题是JS根据id对数组重新排序。例如,如果我有这样一个数组 $array = array(1 => array('name' => 'A','last' => 'B'), 5 => array('name' => 'C','last' => 'D'), 2 => arra
$.map
和$来显示数据。问题是JS根据id对数组重新排序。例如,如果我有这样一个数组
$array = array(1 => array('name' => 'A','last' => 'B'),
5 => array('name' => 'C','last' => 'D'),
2 => array('name' => 'K','last' => 'Z'));
Javascript将以这种方式进行排序
array = {1:{name:'A',last:'B'},2:{name:'C',last:'D'},5:{name:'K',last:'Z'}}
我正在使用uasort根据名称对数组进行排序:
public function specialNameComparison($firstElmnt,$secondElmnt){
if ($firstElmnt['name'] == $secondElmnt['name']) {
return 0;
}
return ($firstElmnt['name'] < $secondElmnt['name']) ? -1 : 1;
}
uasort($users,array($this,'specialNameComparison'));
echo json_encode($users);
die();
为什么Javascript会这样做 正如上面的评论者所指出的,您正在创建一个对象,而不是JS中的数组。没有关联数组,表示索引将您置于“类似数组的对象”的上下文中。如果您需要这些钥匙,我建议您:
$array = [
[ 'key' => 1, 'name' => 'A','last' => 'B' ],
[ 'key' => 5, 'name' => 'C','last' => 'D' ],
[ 'key' => 2, 'name' => 'K','last' => 'Z' ],
];
当json编码时,将输出:
[
{ "key": 1, "name": "A","last": "B" },
{ "key": 5, "name": "C","last": "D" },
{ "key": 2, "name": "K","last": "Z" },
]
那么您的js可以是:
const arr=[
{key:1,name'A',last'B'},
{key:5,name'C',last'D'},
{key:2,name'K',last'Z'},
];
arr.forEach(({key,name,last})=>console.log(`key:${key}-${name}${last}`))
正如上面的评论员所指出的,您正在创建一个对象,而不是JS中的数组。没有关联数组,表示索引将您置于“类似数组的对象”的上下文中。如果您需要这些钥匙,我建议您:
$array = [
[ 'key' => 1, 'name' => 'A','last' => 'B' ],
[ 'key' => 5, 'name' => 'C','last' => 'D' ],
[ 'key' => 2, 'name' => 'K','last' => 'Z' ],
];
当json编码时,将输出:
[
{ "key": 1, "name": "A","last": "B" },
{ "key": 5, "name": "C","last": "D" },
{ "key": 2, "name": "K","last": "Z" },
]
那么您的js可以是:
const arr=[
{key:1,name'A',last'B'},
{key:5,name'C',last'D'},
{key:2,name'K',last'Z'},
];
arr.forEach(({key,name,last})=>console.log(`key:${key}-${name}${last}`))
您没有数组。这是一个对象,如果它有{和}来扩展epscarello所说的,你拥有的是一个对象,而不是数组。无法保证对象上键的顺序。相关:PHP关联数组成为javascript中的对象。Javascript本机没有关联数组的概念。将其转换为真实数组,然后保证顺序。您没有数组。这是一个对象,如果它有{和}来扩展epscarello所说的,你拥有的是一个对象,而不是数组。无法保证对象上键的顺序。相关:PHP关联数组成为javascript中的对象。Javascript本机没有关联数组的概念。将其转换为真实数组,然后保证顺序。