2013-11-21 47 views
0

UPDATE: 感谢Bhavik国王,我通过它成功地循环这个样子。多维数组:获得第二密钥和创建第一个键与它

$file_data = array(); 
      foreach($files as $key => $value){ 
       foreach($value as $name => $name_data) { 
        $file_data[$name] = $files; 
       } 
      } 
      $result = array_merge($data, $file_data); 

Orgininal问:

我上传HTML表格,其中包含文本输入和文件。然后我必须合并$ _POST和$ _FILES数组来循环它们通过一些函数(完整性检查)。我所得到的合并的时候是:

Array 
(
    [name] => A name 
    [description] => A description 
    [year] => 2013 
    [name] => Array 
     (
      [uploaded_file] => pic.jpg 
     ) 

    [type] => Array 
     (
      [uploaded_file] => image/jpg 
     ) 

    [tmp_name] => Array 
     (
      [uploaded_file] => /tmp/phpRqUUw2 
     ) 

    [error] => Array 
     (
      [uploaded_file] => 0 
     ) 

    [size] => Array 
     (
      [uploaded_file] => 1024 
     ) 

) 

我真正想要的是什么,是这样的阵列结构:

Array 
(
    [name] => A name 
    [description] => A description 
    [year] => 2013 
    [uploaded_file] => Array (
     [name] => Array 
      (
       [uploaded_file] => pic.jpg 
      ) 

     [type] => Array 
      (
       [uploaded_file] => image/jpg 
      ) 

     [tmp_name] => Array 
      (
       [uploaded_file] => /tmp/phpRqUUw2 
      ) 

     [error] => Array 
      (
       [uploaded_file] => 0 
      ) 

     [size] => Array 
      (
       [uploaded_file] => 1024 
      ) 

    ) 
) 

因为它是一个变量函数,我需要获得第二个键[uploaded_file]动态。

  1. 我如何获得第二个关键?
  2. 我如何获得所需的结构? 我玩过array_merge()和array_flip,但没有做任何工作。

非常感谢!

UPDATE: 这是合并代码:

$data = isset($_POST[ $tab ]) ? $_POST[ $tab ] : array(); 
$files = isset($_FILES[ $tab ]) ? $_FILES[ $tab ] : array(); 

$result = array_merge($data, $files); 
+0

显示的代码。我认为,必须操纵该代码才能获得所需的输出。 –

+0

添加了上面的合并代码。 – Cino

+0

我已提交答案。看看它是否可以帮助你... –

回答

1

试试您用于合并这

$data = isset($_POST[ $tab ]) ? $_POST[ $tab ] : array(); 
$files = isset($_FILES[ $tab ]) ? $_FILES[ $tab ] : array(); 
foreach($files as $key => $value){ 
    $name[$key] = array($tab => $value); 
} 
$data[$tab] = $name; 

// simply print the data of $data to get your output - just to show you 
print_r($data); 
+0

是的,这让我走向正确的方向。我正在处理它知道两个foreach循环。你可以在下面看到答案。谢谢! – Cino

0

为什么不只是在$ _FILES数组赋值给一个新的数组新的密钥?

$files_data = array(); 
for (int i = 0; i < count($_POST['items']); i++) { 
    // assuming each $_POST['items'] value is associated with each $_FILES value 
    $item_data = $_POST['items'][i]; 
    $item_data['uploaded_file'] = $_FILES[i]; 
    $files_data[] = $item_data; 
} 
相关问题