簡體   English   中英

如何使用 Php 在 foreach 循環內編碼 json 數組

[英]How to encode json array inside foreach loop using Php

我正在使用 Php 和 Rest Api,我正在嘗試使用 foreach 循環對數據(從數據庫中獲取)進行編碼(從數據庫中獲取),但我的當前代碼顯示了三個時間的一個,因此,結果

$users = Services::all();
        $result = array();
        foreach ($users as $item) {
            $data = array('result' => array('image' => $item['image']));
            array_push($result, $data);
        }
        echo json_encode($result);

這是我目前的 output

[{"result":{"image":"abc.jpg"}},{"result":{"image":"abc2.jpg"}},{"result":{"image":"abc3.jpg"}}]

但我希望“結果”應該顯示一次,其他數據(圖像)顯示多次(使用循環)

實際上,對於每個項目,您都添加了一個 result:item 對。

如果我理解得很好,你想要的是 {result:{pair1,pair2,...,pairN}} 和一對蜜蜂 {image:data}

為此,您有兩種選擇:

首先,您可以創建您的配對列表並將其添加到具有關鍵結果的最終數組中。

為此,您的代碼可能如下所示:

$users = Services::all();
$data_array = array();
foreach ($users as $item) {
    array_push($data_array, array('image' => $item['image']));
}
$result = array('result' => $data_array);
echo json_encode($result);

其次(也許是資源使用的最佳解決方案),您可以將數據添加到帶有“結果”鍵的預初始化數組中,如下所示:

$users = Services::all();
$result_array = array('result' => array());
foreach ($users as $item) {
    array_push($result_array['result'], array('image' => $item['image']));
}
echo json_encode($result_array);

尚未測試我的代碼,但主要思想在這里。

ADD:第一個只是第二個的冗余版本,但將兩個代碼並排以了解差異或將它們用於不同目的很有用。

你能試試像

$users = Services::all();
$result = array('result' => []); // EDIT To avoid error "array_push() expects parameter 1 to be array, null given "
foreach ($users as $item) {
    $data = array('image' => $item['image']);
    array_push($result['result'], $data);
}
echo json_encode($result);

順便說一句,您使用的是什么版本的 php? 因為在 php >= 5:4 中,您可以使用短數組語法,例如:

$data = ['image' => $item['image']];
$result['result'][] = $data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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