重组数组并使用update_batch函数

问题描述 投票:0回答:2

重组数组时遇到问题。

我正在将数据批量上传(更新)到数据库。所以我有一个像这样的 3 数组。

Array ( [0] => aaa [1] => ccc [2] => eee [3] => ggg ) 
Array ( [0] => bbb [1] => ddd [2] => fff [3] => hhh ) 
Array ( [0] => 1662 [1] => 1663 [2] => 1664 [3] => 1665 )

所以我想要的是,我需要将数组重组为下面给定的顺序。然后上传(更新)到数据库。

$data = array(
   array(
      'title' => 'aaa' ,
      'Info' => 'bbb' ,
      'id' => '1662'
   ),
   array(
      'title' => 'ccc' ,
      'Info' => 'ddd' ,
      'id' => '1663'
   ),
      array(
      'title' => 'eee' ,
      'Info' => 'fff' ,
      'id' => '1664'
   ),
      array(
      'title' => 'ggg' ,
      'Info' => 'hhh' ,
      'id' => '1665'
   )
);

$this->db->update_batch('mytable', $data,'id'); 

如何重组数组?

注意:当选择不同类型时,数组内容会不断变化。

例如:

array(
      'title' => 'Any value' ,
      'Info' => 'Any value' ,
      'id' => 'Any Id'
codeigniter
2个回答
2
投票

这可能对你有帮助

[akshay@localhost tmp]$ cat test.php 
<?php

$a1 = array('aaa','ccc','eee','ggg');
$a2 = array('bbb','ddd','fff','hhh');
$a3 = array(1662,1663,1664,1665);

// Output
$output = array_map(function($a,$b,$c){ return array('title'=>$a,'Info'=>$b,'id'=>$c);},$a1,$a2,$a3)

print_r ( $output );

// Here add your update statement
// $this->db->update_batch('mytable', $output,'id');

?>

输出

[akshay@localhost tmp]$ php test.php 
Array
(
    [0] => Array
        (
            [title] => aaa
            [Info] => bbb
            [id] => 1662
        )

    [1] => Array
        (
            [title] => ccc
            [Info] => ddd
            [id] => 1663
        )

    [2] => Array
        (
            [title] => eee
            [Info] => fff
            [id] => 1664
        )

    [3] => Array
        (
            [title] => ggg
            [Info] => hhh
            [id] => 1665
        )

)

0
投票

迭代调用

get_defined_vars()
提供了简洁的优雅。只需根据您希望的关联二级键命名列参数即可。

代码:(演示

$a1 = ['aaa', 'ccc', 'eee', 'ggg'];
$a2 = ['bbb', 'ddd', 'fff', 'hhh'];
$a3 = [1662, 1663, 1664, 1665];

var_export(
    array_map(fn($title, $Info, $id) => get_defined_vars(), $a1, $a2, $a3)
);

相关:

© www.soinside.com 2019 - 2024. All rights reserved.