使用空格作为分隔符扩展数组,并将值推送到新数组中。

3

我有一个包含数组的发布函数,该发布函数本身是一个数组,其中包含人们的全名,形式为以下数组:

Array(
  [0] => Adda Gweno
  [1] => Tom malombo
)

我想遍历这个数组并使用空格作为分隔符来分解每个键的值,以便我可以将单独的值发送到一个单独的数组中以便单独存储。
目前我的代码如下:
function save_drs() {    
    $Surname = $this->input->post('Surname'); 
    foreach ($Surname as $e_name):
        $individual = explode(" ", $e_name);
    endforeach;

    $Suggested_Salary = $this->input->post('Suggested_Salary');
    for ($i = 0; $i < count($Surname); $i++) {         
        $bio = array(
            'Surname' =>$individual[0][$i],
            'Other_Names' => $individual[1][$i],
            'Suggested_Salary'=>$Suggested_Salary[$i]
           );
            // $this->db->insert('main_table', $bio);
        print_r($bio);
    }
}

这将打印名称的首字母而不是单词

Array
(   
    [Surname] => A      //Should be Adda
    [Other_Names] => G  //Should be Gweno

)
Array
(   
    [Surname] => T      //Should be Tom
    [Other_Names] => M  //Should be Malombo

)

有什么建议吗?


所以你是通过 $this->input->post('Surname'); 获取变量 $Surname 的。你是如何发布这些信息的?问题似乎在于你的数组结构不正确。 - CodeGodie
这是无关紧要的 $Suggested_Salary = $this->input->post('Suggested_Salary'); - CodeGodie
不,这并不是无关的。我添加了一行新代码来展示我如何使用它。 - alphy
好的,我更新了我的回答。 - CodeGodie
1
提醒一下,尽量不要混合使用编码风格 foreach(): .... endforeach;foreach() { ... }。我会尽可能使用 {}。如果/当你开始在一个团队中工作时,他们最终会感激这种一致性。 - castis
请发布 $Suggested_Salary 的值。 - Narendrasingh Sisodia
2个回答

1
你让自己的工作太难了。这就是你需要的全部:
$employees = array("Adda Gweno", "Tom malombo");
$salaries = array("500", "355");
foreach ($employees as $k => $fullname) {
    $names = explode(" ", $fullname);
    $final["Surname"] = $names[0];
    $final["Other_Names"] = $names[1];
    $final["Salaries"] = $salaries[$k];
    var_dump($final);
}

结果:

array (size=3)
  'Surname' => string 'Adda' (length=4)
  'Other_Names' => string 'Gweno' (length=5)
  'Salaries' => string '500' (length=3)
array (size=3)
  'Surname' => string 'Tom' (length=3)
  'Other_Names' => string 'malombo' (length=7)
  'Salaries' => string '355' (length=3)

0

将多维数组分配给$individual

$individual[] = explode(" ", $e_name);
           ^^

不,$Surname是数组。$e_name是在foreach内创建的字符串。 - OllyBarca
你需要定义在这里做了哪些更改。 - Narendrasingh Sisodia
哈哈,删掉你的评论了。而且我确实描述了更改内容。 - OllyBarca
将$individual分配为多维数组。什么?我必须删除我的评论,因为我的错误。 - Narendrasingh Sisodia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接