在php中组合数组以形成多维数组

在php中组合数组以形成多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我知道有很多答案,但我似乎没有弄对。我有以下阵列和我尝试过的: $a = array ( 0 => '1421' , 1 => '2241' ); $b = array ( 0 => 'teststring1' , 1 => 'teststring2' ); $c = array ( 0 => 'teststring3' , 1 => 'teststring4' ); $d = array ( 0 => 'teststring5' , 1 => '

我知道有很多答案,但我似乎没有弄对。我有以下阵列和我尝试过的:

$a = array ( 0 => '1421' , 1 => '2241' );
$b = array ( 0 => 'teststring1' , 1 => 'teststring2' );
$c = array ( 0 => 'teststring3' , 1 => 'teststring4' );
$d = array ( 0 => 'teststring5' , 1 => 'teststring6' );

$e = array_combine($a, array($b,$c,$d) );
但是我得到了一个错误
array_combine()[function.array combine]:两个参数的元素数应该相等

我知道这是因为
$a
的数组值不是键。这就是我来这里的原因,看看我是否能得到一些帮助,让我的答案看起来像这样:

array(2) {

  [1421]=>array( [0] => teststring1
                 [1] => teststring3
                 [2] => teststring5
                )

  [2241]=>array( [0] => teststring2
                 [1] => teststring4
                 [2] => teststring6
               )


}

如果可以控制阵列的创建,则应按照以下方式创建阵列:

$a = array ('1421' ,'2241');
$b = array ('teststring1', 'teststring3', 'teststring5');
$c = array ('teststring2', 'teststring4', 'teststring6');

$e = array_combine($a, array($b,$c) );
如果没有,则必须在其上循环:

$result = array();
$values = array($b, $c, $d);

foreach($a as $index => $key) {
    $t = array();
    foreach($values as $value) {
        $t[] = $value[$index];
    }
    $result[$key]  = $t;
}

这里有一个新版本的array\u merge\u recursive,它将处理整数键。让我知道进展如何

$a = array ( 0 => '1421' , 1 => '2241' );
$b = array ( 0 => 'teststring1' , 1 => 'teststring2' );
$c = array ( 0 => 'teststring3' , 1 => 'teststring4' );
$d = array ( 0 => 'teststring5' , 1 => 'teststring6' );

$e = array_combine($a, array_merge_recursive2($b, $c, $d));
echo "<pre>";
print_r($e);



function array_merge_recursive2() {
    $args = func_get_args();
    $ret = array();

    foreach ($args as $arr) {
        if(is_array($arr)) {
            foreach ($arr as $key => $val) {
                $ret[$key][] = $val;
            }
        }
    }
    return $ret;
}
$a=array(0=>'1421',1=>'2241');
$b=数组(0=>'teststring1',1=>'teststring2');
$c=数组(0=>'teststring3',1=>'teststring4');
$d=数组(0=>teststring5',1=>teststring6');
$e=array_combine($a,array_merge_recursive2($b,$c,$d));
回声“;
印刷品(港币);;
函数数组_merge_recursive2(){
$args=func_get_args();
$ret=array();
foreach($args作为$arr){
if(is_数组($arr)){
foreach($arr作为$key=>$val){
$ret[$key][]=$val;
}
}
}
返回$ret;
}

这是一个功能编码风格的单行程序。使用
null
函数参数和“values”数组调用将生成所需的子数组结构
array\u combine()
执行键=>值关联

代码()

输出:


超级干净,对吗?我知道。当您无法控制初始数组生成步骤时,这是一个有用的小技巧。

我刚刚编辑并发现了一个类似于此的循环。我已经删除了我的编辑,我将把它标记为已解决。我使用了你的循环,因为我比我写的更喜欢它。谢谢另外,感谢您添加关于无法控制它们的内容,因为我使用了
array\u fill.
var_export(array_combine($a, array_map(null, $b, $c, $d)));
array (
  1421 => 
  array (
    0 => 'teststring1',
    1 => 'teststring3',
    2 => 'teststring5',
  ),
  2241 => 
  array (
    0 => 'teststring2',
    1 => 'teststring4',
    2 => 'teststring6',
  ),
)