以空格为分隔符的爆炸数组并将值推送到新数组

Posted

技术标签:

【中文标题】以空格为分隔符的爆炸数组并将值推送到新数组【英文标题】:Exploding array with space as the delimeter and pushing the values to a new array 【发布时间】:2015-06-15 16:12:51 【问题描述】:

我有一个本身就是一个数组的帖子函数,帖子包含数组形式的人的全名,例如:

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-&gt;input-&gt;post('Surname'); 获取变量$Surname 您如何发布此信息?问题似乎是你的数组结构不正确。 这无关$Suggested_Salary = $this-&gt;input-&gt;post('Suggested_Salary'); 不,这不是无关紧要的,我已经添加了一个新行来展示我如何使用它 好的,我更新了答案 提醒一下,尽量不要混合编码风格foreach(): .... endforeach;foreach() ... 。我会尽可能使用。如果/当您开始在一个团队中工作时,他们最终会欣赏这种一致性。 【参考方案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)

【讨论】:

【参考方案2】:

以多维数组的形式分配给$individual

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

【讨论】:

不,$Surname 是数组。 $e_name 是在 foreach 中创建的字符串。 您需要在这里定义您所做的更改 大声笑,删除评论的方法。我确实描述了这些变化。 作为多维数组赋值给$individual什么?我必须删除我的评论,因为我不好

以上是关于以空格为分隔符的爆炸数组并将值推送到新数组的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用

php爆炸:使用空格分隔符将字符串拆分为单词

比较 2 个对象的值并将值推送到一个对象数组

如何遍历一组 Firebase Firestore 文档并将值推送到数组中

比较并将正确的值推送到 JavaScript/TypeScript 中的对象数组

PHP:将字符串拆分为数组,例如没有分隔符的爆炸