Проблема с json в while

245
13 марта 2018, 03:56

В цикле я собираю файлы. Мне нужно вернуть это в JSON в таком формате:

{"1":"d.txt","2":"dj.txt"}

Но меня выходит так:

{"1":"d.txt"}{"2":"dj.txt"}

Вот код:

<?
$files = array_diff(scandir("plug/lol/"), ['.','..']);
$lole = [
"count" => count($files)
];
//echo json_encode($lole);
foreach($files as $key=>$lol){
    $result = [
    $key-1=> $lol
    ];
    echo json_encode($result);
}
?>
Answer 1

Посмотрите на свой код

foreach($files as $key=>$lol){
    $result = [
        $key-1=> $lol
    ];
    echo json_encode($result);
}

на каждой итерации цикла вы заново определяете массив, и сразу же выводите результат. Вам же надо на итерации добавлять элемент, а вывести все в конце

foreach($files as $key=>$lol){
    $result[$key-1] = $lol;
}
echo json_encode($result);
Answer 2

Поможет вам array_merge()

<?
$files = array_diff(scandir("plug/lol/"), ['.','..']);
$array = [];
$lole = [
"count" => count($files)
];
//echo json_encode($lole);
foreach($files as $key=>$lol){
    $result = [
        $key-1=> $lol
    ];
    $array = array_merge($array, $result);
}
echo json_encode($array);
?>
READ ALSO
Вырезать только нужный текст

Вырезать только нужный текст

Есть строка Покупка паетов: Ntv_56°E, Xtra TV 4W на сумму 0066667 $

184
Как создать такой массив программно?

Как создать такой массив программно?

Как создать такой массив программно (php)?

190
Ошибка unauthorized_client при попытке подключиться к API google spreadsheets

Ошибка unauthorized_client при попытке подключиться к API google spreadsheets

Сайт на yii2Пытаюсь подключиться к документу из google spreadsheets и вытянуть оттуда данные, но при первой же попытке подключиться к файлу вижу ошибку

190