[英]How to GET array values from JavaScript and display the same values in php
[英]How to get array id and name values display in the same order on javascript after ajax call?
我在 php 中有一個數組,如下所示:
if(count($rows)) {
$new = array();
foreach($rows as $row) {
$new[$row['id']] = $row['sel_date']." - ".date('l',$row['date_timestamp']);
//$myobj->id = $row['id'];
}
}
現在在 php 頁面上,我有兩個選項可以將我的數組傳遞回 javascript ajax 功能:
print_r($new) 或 echo json_encode($new)
但是,當我使用 json_encode($new) 從 php 頁面發送到 javascript 頁面時,它丟失了 php 數組鍵的順序。 例如,我的 php 新數組如下所示:
Array
(
[71] => 07/09/2019 - Saturday
[81] => 08/09/2019 - Sunday
[83] => 09/09/2019 - Monday
[84] => 10/09/2019 - Tuesday
[72] => 15/09/2019 - Sunday
[73] => 16/09/2019 - Monday
[74] => 17/09/2019 - Tuesday
[75] => 18/09/2019 - Wednesday
)
現在在 javscript 方面,如果我使用 JSON.parse(data) 那么順序將如下所示
Array
(
[71] => 07/09/2019 - Saturday
[72] => 15/09/2019 - Sunday
[73] => 16/09/2019 - Monday
[74] => 17/09/2019 - Tuesday
[75] => 18/09/2019 - Wednesday
[81] => 08/09/2019 - Sunday
[83] => 09/09/2019 - Monday
[84] => 10/09/2019 - Tuesday
)
當 json.parse 重新排列 php 數組的順序時,我不希望發生這種情況。
那么我應該怎么做來維護訂單,以及如何在 javascript 端循環遍歷 php 返回的數組,以便我的訂單保持不變?
謝謝 & 花了很多時間來完成這項工作,但 json.parse() 不允許我維護 php 數組的順序,並且不知道在 javascript 端循環遍歷 php 數組的任何其他方法。
許多人沒有得到正確的答案,因為我在 stackoverflow 上檢查了許多其他帖子,但沒有得到我的答案。 所以請不要在這里引用任何其他帖子。
PHP 中的JSON_ENCODE
保留了鍵順序,但在 Javascript 中並非如此。
在PHP
:
$arr = [3 => "A", 1 => "B", 2 => "C"];
echo json_encode($arr);
Output:
{"3":"A","1":"B","2":"C"}
但是如果你在Javascript
嘗試相同
var obj = {"3":"A","1":"B","2":"C"};
console.log(JSON.stringify(obj));
Output:
"{"1":"B","2":"C","3":"A"}"
要在 javascript 中也保留鍵順序,您需要在 PHP 中創建對象數組。
$newArr = [];
foreach($arr as $key => $value){
$newArr[] = [$key => $value];
}
echo json_encode($newArr);
Output:
[{"3":"A"},{"1":"B"},{"2":"C"}]
現在您可以在 Javascript 中訪問相同的內容。
arrObj = JSON.parse(str);
arrObj.forEach(function(element) {
for (strKey in element) {
console.log(strKey + ' : ' + element[strKey]);
}
});
Output:
3 : A
1 : B
2 : C
試試這個代碼:
echo json_encode($new,JSON_UNESCAPED_UNICODE);
您可以使用JSON_FORCE_OBJECT
參數使json_encode
輸出為對象。 這將在輸出中包含 javascript 識別的鍵:
echo json_encode(array_values($new), JSON_FORCE_OBJECT | JSON_UNESCAPED_SLASHES);
輸出:
{
"71": "07/09/2019-Saturday",
"81": "08/09/2019-Sunday",
"83": "09/09/2019-Monday",
"84": "10/09/2019-Tuesday",
"72": "15/09/2019-Sunday",
"73": "16/09/2019-Monday",
"74": "17/09/2019-Tuesday",
"75": "18/09/2019-Wednesday"
}
在 JavaScript 中:
let json = '{\\ "71": "07/09/2019-Saturday",\\ "81": "08/09/2019-Sunday",\\ "83": "09/09/2019-Monday",\\ "84": "10/09/2019-Tuesday",\\ "72": "15/09/2019-Sunday",\\ "73": "16/09/2019-Monday",\\ "74": "17/09/2019-Tuesday",\\ "75": "18/09/2019-Wednesday"\\ }'; let obj = JSON.parse(json); console.log(obj[72]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.