首页 > 解决方案 > PHP数组合并爆炸

问题描述

我有一些字段可以从各种输入中接收内容。

$fields = array();

if (!empty($_POST['field1'])) {
 $fields = explode(',', $_POST['field1']);
 // receives: foo1, foo2
}

if (!empty($_POST['field2'])) {
 $fields = explode(',', $_POST['field2']);
 //receives: foo3, foo4, foo5
}

if (!empty($_POST['field3'])) {
 $fields = explode(',', $_POST['field3']);
 //receives: foo6
}

// Array ( [0] => foo1 [1] => foo2 ) 
// Array ( [0] => foo3 [1] => foo4 [2] => foo5 )
// Array ( [0] => foo6 )

我想把它们变成一个简单的数组。

//Array ( [0] => foo1 [1] => foo2 [2] => foo3 [3] => foo4 [4] => foo5 [5] => foo6 )

标签: phparrays

解决方案


您可以通过以下几种方式进行:

方式 1 - array_merge

$fields = array();

if (!empty($_POST['field1'])) {
 $fields = explode(',', $_POST['field1']);
 // receives: foo1, foo2
}

if (!empty($_POST['field2'])) {
 $fields = array_merge($fields, explode(',', $_POST['field2']));
 //receives: foo3, foo4, foo5
}

if (!empty($_POST['field3'])) {
 $fields = array_merge($fields, explode(',', $_POST['field3']));
 //receives: foo6
}

方式 2 - array_push

$fields = array();

if (!empty($_POST['field1'])) {
 $fields = explode(',', $_POST['field1']);
 // receives: foo1, foo2
}

if (!empty($_POST['field2'])) {
    foreach (explode(',', $_POST['field2']) as $val) {
      array_push($fields, $val);
    }
    //receives: foo3, foo4, foo5
}

if (!empty($_POST['field3'])) {
    foreach (explode(',', $_POST['field3']) as $val) {
      array_push($fields, $val);
    }
   //receives: foo6
}

推荐阅读