【问题标题】:Brackets instead of comma using foreach to create JSON with PHP括号而不是逗号使用 foreach 使用 PHP 创建 JSON
【发布时间】:2021-10-17 06:18:11
【问题描述】:

所以我正在尝试使用 ajax 请求使用 php 创建一个开源文件管理器,并且当我使用 json_encode 时,我的 json 响应会为每个数组键获取一个右括号。

这是代码(PHP):

<?php

$fileDirectory = "files/";
$fileArray = array_slice(scandir("$fileDirectory"), 3);
$fileSizeArray = array();

foreach($fileArray as $File){
    $fileSizeArray[$File] = filesize($fileDirectory.$File);
}

foreach($fileSizeArray as $File => $fileSize){
    echo json_encode ([
        $filesResponseArray[] = array(
            'fileName' => $File,
            'fileSize' => $fileSize
        )
    ]);
}

结果如下:

[{"fileName":"61177d35527fd_w68FQFb.png","fileSize":10752}][{"fileName":"611780a39307c_1152265.jpg","fileSize":1383556}]

我需要这个结果

[{"fileName":"61177d35527fd_w68FQFb.png","fileSize":10752},{"fileName":"611780a39307c_1152265.jpg","fileSize":1383556}]

【问题讨论】:

  • 您必须将所有内容放入一个大数组中,然后在最后对所有内容进行一次编码。否则你会得到很多单独的 JSON 结构

标签: php arrays json file filesize


【解决方案1】:

您可以快速编码。试试这个:

<?php

$fileDirectory = "files/";
$fileArray = array_slice(scandir("$fileDirectory"), 3);
$fileSizeArray = array();

foreach($fileArray as $File){
    $fileSizeArray[$File] = filesize($fileDirectory.$File);
}

foreach($fileSizeArray as $File => $fileSize){
        $filesResponseArray[] = array(
            'fileName' => $File,
            'fileSize' => $fileSize
        );
}

echo json_encode($filesResponseArray);

【讨论】:

  • 成功了,只需要在$filesResponseArray中加一个分号,谢谢!
  • @JoaoPedroCovreeSilva 不错!啊,是的,我没有注意到,我会纠正它。
猜你喜欢
  • 2013-06-22
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
相关资源
最近更新 更多