【问题标题】:codeigniter modify array from string for insert_batchcodeigniter 从 insert_batch 的字符串修改数组
【发布时间】:2018-12-06 12:18:33
【问题描述】:

这是我的表单输入$data,我希望保留这个输入。

$data = "39X3,29X5";

这是我的代码将字符串转换为数组

$data = explode(",", $data);

$out = array();
$step = 0;

foreach($data as $key=>$item){
   foreach(explode('X',$item) as $value){
   $out[$key][$step++] = $value;
}
print '<pre>';
print_r($out);
print '</pre>';

结果

Array
(
    [0] => Array
    (
        [0] => 39
        [1] => 3
    )

    [1] => Array
    (
        [2] => 29
        [3] => 5
    )
)

但我想更改键并修复此问题以支持查询生成器类

$this->db->insert_batch('mytable',$out). 

像这样。

array
(
    array
    (
        'number' => 39
        'prize' => 3
    ),
    array
    (
        'number' => 29
        'prize' => 5
    )
)

我努力使用循环混淆。

【问题讨论】:

  • foreach(explode(",", $data) as $item) { $out[] = array_combine(['number', 'prize'], explode('X',$item)); }
  • 谢谢,这个值。没想到这么简单

标签: php arrays codeigniter explode


【解决方案1】:

所以你需要删除内部foreach并将相关值放入数组中。

foreach($data as $key=>$item){
    $exp = explode('X', $item);
    $out[$key] = [
        'number' => $exp[0],
        'prize' => $exp[1]
    ];
} 

demo查看结果

【讨论】:

  • 如果我插入 $data = "39,29X5"; 这将出错 Notice: Undefined offset: 1 in /in/Y715I on line 9 但仍然可以查看。如何删除此通知。检查结果在demo
  • @AGA 使用@ symbol 隐藏通知3v4l.org/JqkRM
【解决方案2】:

将您的 foreach 循环更改为以下内容:

foreach($data as $key=>$item){
  $temp = explode('X',$item);
  $out[] = ['number' => $temp[0] , 'prize' => $temp[1]];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2015-01-28
    相关资源
    最近更新 更多