[英]convert numerically indexed associative-array in PHP, to valid JavaScript Object via JSON
假設您有一個像這樣的數字索引數組(通過RedBeanPHP's
find
操作獲得):
[
[33=>["name"=>"John", "age"=25]],
[55=>["name"="Jane", "age"=23]]
]
其中33和55是2個“ bean”中的每一個的id's
(基本上是關聯數組)。
並且您想要將數組轉換為JSON,以便可以將其發送到JavaScript客戶端,並將其中的數據用作JavaScript對象。
但是您不能簡單地用JSON_encode
因為您最終將在JavaScript對象中使用數字鍵,而JavaScript不喜歡這樣。
您可以使用什么策略通過JSON將該數組轉換為JavaScript對象,以便所有數據(包括每個bean的id
)都可以在JavaScript端使用? (對那里的RedBeanPHP
人士:我希望有一種本機的RedBeanPHP
方式可以實現,但我還沒有找到。)
一種選擇是使用array_map
遍歷數組。 使用array_values
可以從數組中獲取所有值,並對數組進行數字索引。
$arr = [
[33=>["name"=>"John", "age"=>25]],
[55=>["name"=>"Jane", "age"=>23]]
];
$result = array_map(function($o){
return array_values($o)[0];
}, $arr);
echo json_encode( $result );
結果將是:
[{"name":"John","age":25},{"name":"Jane","age":23}]
對於您的關聯數組:
$array = array(33 => array("name" => "John", "age" => 25), 55 => array("name" => "Jane", "age" => 23));
PHP json_encode函數:
$good_json = json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
為JavaScript對象(字符串“名稱”:值對)生成JSON:
{"33":{"name":"John","age":25},"55":{"name":"Jane","age":23}}
簡單。 您應該嘗試一下。 首先遍歷外部數組並在內部獲取密鑰,即數據id
。 將id
添加到其他值,然后將該數組推入結果數組。
$result = array();
$arr = [[33=>["name"=>"John", "age"=>25]],[55=>["name"=>"Jane", "age"=>23]]];
foreach ($arr as $ar) {
foreach ($ar as $key => $value) {
$value['id'] = $key;
array_push($result, $value);
}
}
echo json_encode($result);
輸出:-
[{"name":"John","age":25,"id":33},{"name":"Jane","age":23,"id":55}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.