PHP排序数组在JS中在json_encode之后不排序


PHP sorted Array is not sorted in JS after json_encode

PHP中有两个数组。我像这样对第一个数组排序:

arsort($array1);

然后像这样输出数组:

foreach ($array1 as $key => $val) {
    $output .= "<tr>
    <td>".$array1[$key]."</td>
    <td>".$array2[$key]."</td>
    </tr>";
}
print($output);

数组是这样的:

$array1 = [21, 12, 64, 87, 5, 823, ...]
$array2 = ["label1", "label2", "label3", "label4", ...]

$array2中的每个元素都与$array1中的一个元素相关联,因此在本例中,元素"label1"应该链接到元素21(两个键均为0),但如果我对$array1进行排序,元素键发生变化,它们也应该在$array2中发生变化

我还需要在Javascript中使用$array2以相同的顺序,所以我使用json_encode这样:

$arr2 = json_encode($array2);
$somejs = <<<ECHO
<script type="text/javascript">
var arr2 = $arr2;
for (i = 0; i < arr2.length; i++) {
    console.log(arr2[i]);
}
</script>
ECHO;
echo $somejs;

但是它不像foreach循环那样显示,而是按照它原来的顺序显示(键:0,1,2,3,…)

是否有可能将键传递给创建的Javascript数组,或者你们有另一个,也许更好的解决方案?

希望我的问题是清楚的,如果有问题告诉我:)

谢谢

创建一个包含$array2重新排序版本的数组$array3。您可以在打印表格时执行此操作。

$array3 = array();
foreach ($array1 as $key => $val) {
    $output .= "<tr>
    <td>".$array1[$key]."</td>
    <td>".$array2[$key]."</td>
    </tr>";
    $array3[] = $array2[$key];
}
print($output);

然后在创建Javascript时使用json_encode($array3)