php - 如何在以下场景中操作数组?

标签 php arrays multidimensional-array associative-array dynamic-arrays

我有一个名为$data 的数组。实际上它是一个相当大的数组,它是动态生成的。这意味着它可以小也可以大。但为了您的引用,我正在打印一个相对较小的数组实例 $data:

Array
(
    [op] => edit
    [pt_id] => 4
    [form_submitted] => yes
    [pt_doc_title] => Array
        (
            [1] => Test Document
            [2] => New Joining
            [3] => Happy New Year
        )

    [pt_doc_id] => Array
        (
            [0] => 6
            [1] => 7
        )

    [pt_doc_file_iname] => Array
        (
            [0] => test_document.docx
            [1] => new_joining.pdf
        )

    [submit] => Update
)

我想以如下方式操作上面的数组($data):

Array
(
    [op] => edit
    [pt_id] => 4
    [form_submitted] => yes
    [pt_documents_data] => Array        
        (
      [0] => Array
        (   
            [pt_doc_title] => Test Document
        [pt_doc_id] => 6
        [pt_doc_file_iname] => test_document.docx
        )
      [1] => Array
        (
        [pt_doc_title] => New Joining
        [pt_doc_id] => 7
        [pt_doc_file_iname] => new_joining.pdf
        )
      [2] => Array
                (
        [pt_doc_title] => Over load
        [pt_doc_id] => 
        [pt_doc_file_iname] => 
            )
          )
)

但由于我对 PHP 中的数组操作还比较陌生,所以我不知道该如何实现。任何人都可以在这方面帮助我吗?

最佳答案

foreach ($array['pt_doc_title'] as $key => $title) {
    $id   = isset($array['pt_doc_id'][$key])         ? $array['pt_doc_id'][$key]         : null;
    $file = isset($array['pt_doc_file_iname'][$key]) ? $array['pt_doc_file_iname'][$key] : null;

    $array['pt_documents_data'][] = array(
        'pt_doc_title'      => $title,
        'pt_doc_id'         => $id,
        'pt_doc_file_iname' => $file
    );
}

unset($array['pt_doc_title'], $array['pt_doc_id'], $array['pt_doc_file_iname']);

类似的东西。您使用 $array['pt_doc_title'] 的键从另外两个数组中获取相应的另外两个值,然后将它们分组到一个新数组 pt_documents_data 中。

一般操作的简化示例:

$array = array(
    'foo' => array('a', 'b', 'c'),
    'bar' => array('x', 'y', 'z')
);

$result = array();

foreach ($array['foo'] as $key => $foo) {
    $result[] = array('foo' => $foo, 'bar' => $array['bar'][$key]);
}

// result: array(array('foo' => 'a', 'bar' => 'x'), array('foo' => 'b', 'bar' => 'y'), ...)

关于php - 如何在以下场景中操作数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262341/

相关文章:

java - 将二维数组的行返回为给定行号的逗号分隔字符串 Java

arrays - 将文件读入多维数组并跳过包含 Perl 中某些信息的行的最佳方法

php - 将多维数组插入mysql PHP的递归函数

php - 在 Wordpress 页面的下拉列表中显示来自数据库 mySQL 的数据

javascript - 如何创建可调用的函数数组?

ios - 如何将数组中的数据从一个vc传递到另一个vc?

php - 使用键合并两个多维数组并添加值

php - PDO 将错误的日语字符插入数据库

php - 如何向sql server添加数据

javascript - 将多个数组合并为一个数组