由于我遇到了完全相同的问题并且当我得到集合字段时,我有一个多嵌套级别数组!所以,我需要调整这里发布的功能。
我合并了@John 和@DannyBevers 解决方案以获得name 参数的完整密钥和contents 参数的值。
然后,我在multipart键下添加了函数结果
功能:
private function flatten($array, $prefix = "[", $suffix = "]") {
global $i;
$result = array();
foreach($array as $key=>$value) {
if(is_array($value)) {
if($i == 0) {
$result = $result + $this->flatten($value, $key.$prefix, $suffix);
}
else {
foreach ($this->flatten($value, $prefix . $key . $suffix."[", $suffix) as $k => $v){
$result[] = $v;
}
}
}
else {
if($value instanceof UploadedFile){
$result[] = ["name" => $prefix.$key.$suffix,
"filename" => $value->getClientOriginalName(),
"Mime-Type" => $value->getMimeType(),
"contents" => fopen($value->getPathname(), "r")];
}
else {
$result[] = ["name" => $prefix . $key . $suffix, "contents" => $value];
}
}
$i++;
}
return $result;
}
输出:
Array
(
[multipart] => Array
(
[0] => Array
(
[name] => requestbundle_issuingserviceproduct[sessionType]
[contents] => 1
)
[1] => Array
(
[name] => requestbundle_issuingserviceproduct[globalServiceType]
[contents] => 1
)
[2] => Array
(
[name] => requestbundle_issuingserviceproduct[brand]
[contents] => 1
)
[3] => Array
(
[name] => requestbundle_issuingserviceproduct[device]
[contents] => 1
)
[4] => Array
(
[name] => requestbundle_issuingserviceproduct[interfaces][0]
[contents] => 1
)
[5] => Array
(
[name] => requestbundle_issuingserviceproduct[interfaces][1]
[contents] => 1
)
[6] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][0][application]
[contents] => 6
)
[7] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][0][quantity]
[contents] => 2
)
[8] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][2][application]
[contents] => 2
)
[9] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][2][quantity]
[contents] => 3
)
[10] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][5][application]
[contents] => 5
)
[11] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][5][quantity]
[contents] => 5
)
[12] => Array
(
[name] => requestbundle_issuingserviceproduct[trackingNumber]
[contents] => CPV_XXXX
)
[13] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyAddress]
[contents] => street
)
[14] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyCity]
[contents] => Caen
)
[15] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyCountry]
[contents] => AF
)
[16] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyFax]
[contents] =>
)
[17] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyName]
[contents] => Society
)
[18] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyPhone]
[contents] => 0233445566
)
[19] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyPostalCode]
[contents] => 14000
)
[20] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyState]
[contents] =>
)
[21] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][email]
[contents] => john@mail.fr
)
[22] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][fullName]
[contents] => John
)
[23] => Array
(
[name] => requestbundle_issuingserviceproduct[platformImport]
[contents] => 1
)
[24] => Array
(
[name] => requestbundle_issuingserviceproduct[standardProfileImport]
[contents] => 1
)
[25] => Array
(
[name] => requestbundle_issuingserviceproduct[technicalContact][email]
[contents] => patou@mail.fr
)
[26] => Array
(
[name] => requestbundle_issuingserviceproduct[technicalContact][fullName]
[contents] => Patou
)
[27] => Array
(
[name] => requestbundle_issuingserviceproduct[filesForm][0][binaryContent]
[filename] => "File_test_to_upload.txt"
[Mime-Type] => "text/plain"
[contents] => stream resource @28{
timed_out: false
blocked: true
eof: false
wrapper_type: "plainfile"
stream_type: "STDIO"
mode: "r"
unread_bytes: 0
seekable: true
uri: "/tmp/phpEgxr10"
options: []
}
)
)
)
@Danny Bevers 解决方案将输出:
Array
(
[multipart] => Array
(
[0] => Array
(
[name] => requestbundle_issuingserviceproduct[sessionType]
[contents] => 1
)
[1] => Array
(
[name] => requestbundle_issuingserviceproduct[globalServiceType]
[contents] => 1
)
[2] => Array
(
[name] => requestbundle_issuingserviceproduct[brand]
[contents] => 1
)
[3] => Array
(
[name] => requestbundle_issuingserviceproduct[device]
[contents] => 1
)
[4] => Array
(
[name] => requestbundle_issuingserviceproduct[interfaces][0]
[contents] => 1
)
[5] => Array
(
[name] => requestbundle_issuingserviceproduct[applicationsProductQuantity][0]
[contents] => Array
(
[application] => 6
[quantity] => 2
)
)
[6] => Array
(
[name] => requestbundle_issuingserviceproduct[trackingNumber]
[contents] => CPV_XXXX
)
[7] => Array
(
[name] => requestbundle_issuingserviceproduct[billingContact][companyAddress]
[contents] => street
)
[8] => Array
(
[name] => requestbundle_issuingserviceproduct[platformImport]
[contents] => 1
)
[9] => Array
(
[name] => requestbundle_issuingserviceproduct[standardProfileImport]
[contents] => 1
)
[10] => Array
(
[name] => requestbundle_issuingserviceproduct[technicalContact][email]
[contents] => patou@mail.fr
)
)
)
在 my 项目中,我的函数不会抛出任何错误,而 @DannyBevers 会抛出任何错误。
希望对您有所帮助!