簡體   English   中英

通過JSON將PHP中的數字索引關聯數組轉換為有效的JavaScript對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM