经过漫长的一天调试并尝试和错误尝试使用嵌套数组和资源项的Guzzle6帖子搜索一个好的方法.
我在Guzzle6文档中发现需要使用['multipart'=> []]发布数据.当我得到单个数组项时,这个工作.但是我得到了像这样的嵌套数组项.
[ [firstname] => 'Danny', [phone] => [ [0] => [ [phone] => 0612345678 ] ] [picture] => '/data/...' ]
这需要格式化为Guzzle6的多部分,如下所示.
[ [ 'name' => 'firstname', 'contents' => 'Danny' ], [ 'name' => 'phone[0][phone] 'contents' => '0612345678' ], [ 'name' => 'picture', 'contents' => fopen('....', 'r') ] ]
我想在没有特殊技巧的情况下解决这个问题.有没有一种方法可以将带有嵌套数组和资源的post数组发送到multipart数组.
经过一整天的工作后,我得到了我的多部分表单数据.对于每个有相同问题的人来说,这里是代码.在$ output中,数据中有一系列字段.它可以在Guzzle的['multipart'=> $ output]中使用.
$output = []; foreach($data as $key => $value){ if(!is_array($value)){ $output[] = ['name' => $key, 'contents' => $value]; continue; } foreach($value as $multiKey => $multiValue){ $multiName = $key . '[' .$multiKey . ']' . (is_array($multiValue) ? '[' . key($multiValue) . ']' : '' ) . ''; $output[] = ['name' => $multiName, 'contents' => (is_array($multiValue) ? reset($multiValue) : $multiValue)]; } }