我在 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...)
是否可以通过某种方式将 key 传递给创建的 Javascript 数组,或者你们有另一个可能更好的解决方案吗?
希望我的问题很清楚,如果有问题请告诉我:)
谢谢
最佳答案
创建一个数组 $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)
。
关于javascript - PHP 排序数组在 json_encode 后在 JS 中未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662742/