json 将对象从post发送到php并循环的正确方法

vpfxa7rd  于 2023-03-04  发布在  PHP
关注(0)|答案(1)|浏览(171)

我正在尝试向php服务器发出post请求,我需要在一个“object”中传递一些规范,我传递参数:

files: "[{qty: 25, file: 'LabelProof_1148_1.pdf'}, {qty: 50, file:'LabelProof_1148_2.pdf'}]"

我可以像这样在php中访问参数:

$files = $request->files;

当我尝试循环遍历它时,我得到一个错误:

foreach ($files as $f) {
        return($f);
    }

我试着破译它:

$files = json_decode($request->files);

这仍然会导致错误

Invalid argument supplied for foreach()

我怎样才能做到这一点?

vlju58qv

vlju58qv1#

要将JSON字符串转换为JSON格式,您应该从以下位置修复字符串格式:

[{qty: 25, file: 'LabelProof_1148_1.pdf'}, {qty: 50, file:'LabelProof_1148_2.pdf'}]

致:

[{"qty": 25, "file": "LabelProof_1148_1.pdf"}, {"qty": 50, "file":"LabelProof_1148_2.pdf"}]

你可以通过如下的字符串替换来修复这个问题:

<?php
//$request = new stdClass();
$request->files = "[{qty: 25, file: 'LabelProof_1148_1.pdf'}, {qty: 50, file:'LabelProof_1148_2.pdf'}]";
$files = str_replace("'", '"', $request->files);
$files = str_replace('qty', '"qty"', $files);
$files = str_replace('file', '"file"', $files);
$files = json_decode($files, true);
foreach ($files as $f) {
    var_dump($f);
    echo '<br />';
}
?>

相关问题