当前位置:  开发笔记 > 编程语言 > 正文

Guzzle使用嵌套数组发布多部分请求

如何解决《Guzzle使用嵌套数组发布多部分请求》经验,为你挑选了1个好方法。

经过漫长的一天调试并尝试和错误尝试使用嵌套数组和资源项的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数组.



1> Danny Bevers..:

经过一整天的工作后,我得到了我的多部分表单数据.对于每个有相同问题的人来说,这里是代码.在$ 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)];
        }
    }

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有