在json_encode之后,PHP排序的数组未在JS中排序

时间:2015-09-19 00:02:01

标签: javascript php arrays sorting

我在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中的元素相关联,因此在此示例中元素&#34; label1&#34;应该链接到元素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数组,或者你们有其他更好的解决方案吗?

希望我的问题清楚告诉我是否有问题:)

由于

1 个答案:

答案 0 :(得分:2)

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

$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)