PHP如何组合多个数组

PHP如何组合多个数组,php,arrays,string,null,Php,Arrays,String,Null,我在组合几个数组时遇到了一个问题,即第二个数组的索引必须存在,但不能作为合并数组的值 例如,这3个阵列: $a[0] = 'some A string'; $a[1] = 'some A string'; $a[2] = 'some A string'; $a[4] = 'some A string'; $a[6] = 'some A string'; $a[8] = 'some A string'; $a[10] = 'some A

我在组合几个数组时遇到了一个问题,即第二个数组的索引必须存在,但不能作为合并数组的值

例如,这3个阵列:



    $a[0] = 'some A string';
    $a[1] = 'some A string';
    $a[2] = 'some A string';
    $a[4] = 'some A string';
    $a[6] = 'some A string';
    $a[8] = 'some A string';
    $a[10] = 'some A string';

    $b[1] = 'some B string';
    $b[3] = 'some B string';
    $b[5] = 'some B string';
    $b[7] = 'some B string';
    $b[9] = 'some B string';
    $b[11] = 'some B string';

    $c[0] = 'some C string';
    $c[1] = 'some C string';
    $c[3] = 'some C string';
    $c[6] = 'some C string';
    $c[9] = 'some C string';
    $c[12] = 'some C string';
    $c[15] = 'some C string';

应改写为:



    Array
    (
        [0] => some A string
        [1] => some A string
        [2] => some A string
        [3] => blabla
        [4] => some A string
        [5] => blabla
        [6] => some A string
        [7] => blabla
        [8] => some A string
        [9] => blabla
        [10] => some A string
        [11] => blabla
        [12] => blabla
        [15] => blabla
    )
    Array
    (
        [0] => blabla
        [1] => some B string
        [2] => blabla
        [3] => some B string
        [4] => blabla
        [5] => some B string
        [6] => blabla
        [7] => some B string
        [8] => blabla
        [9] => some B string
        [10] => blabla
        [11] => some B string
        [12] => blabla
        [15] => blabla
    )
    Array
    (
        [0] => some C string
        [1] => some C string
        [2] => blabla
        [3] => some C string
        [4] => blabla
        [5] => blabla
        [6] => some C string
        [7] => blabla
        [8] => blabla
        [9] => some C string
        [10] => blabla
        [11] => blabla
        [12] => some C string
        [15] => some C string
    )

这样的数组可以有3个以上。
如何实现这样的结果,使每个数组的键数完全相同,并使用“blabla”而不是从其他表中获取的值来填充?

编辑了数组的动态长度

<?php
    $a = array();
     $a[0] = 'some A string';
        $a[1] = 'some A string';
        $a[2] = 'some A string';
        $a[4] = 'some A string';
        $a[6] = 'some A string';
        $a[8] = 'some A string';
        $a[10] = 'some A string';


    end($a); 
    $last = key($a);


    $returnarray = array();    
    for ($i = 0; $i <= $last; $i++) {
        if(isset($a[$i])) {
            $returnarray[] = $a[$i];
        }else{
           $returnarray[] = "blabla";
        }
    } 

    print_r($returnarray);

首先,您需要获取密钥列表

最简单的方法是创建超级阵列并获取其所有密钥

$mega=array();

$mega=$a+$b+$c;
然后,您需要使用array_keys()获取所有键

然后,您需要遍历键,找出哪些数组有,哪些没有。如果只有3个数组,则可以手动迭代所有3个数组

工作代码的完整版本:

<?php
$a[0] = 'some A string';
$a[1] = 'some A string';
$a[2] = 'some A string';
$a[4] = 'some A string';
$a[6] = 'some A string';
$a[8] = 'some A string';
$a[10] = 'some A string';

$b[1] = 'some B string';
$b[3] = 'some B string';
$b[5] = 'some B string';
$b[7] = 'some B string';
$b[9] = 'some B string';
$b[11] = 'some B string';

$c[0] = 'some C string';
$c[1] = 'some C string';
$c[3] = 'some C string';
$c[6] = 'some C string';
$c[9] = 'some C string';
$c[12] = 'some C string';
$c[15] = 'some C string';
$mega=array();
$mega=$a+$b+$c;
$keys=array_keys($mega);
$resulting_array=array();

foreach($keys as $key)
{
        if(isset($a[$key]))
                $resulting_array[0][$key]=$a[$key];
        else
                $resulting_array[0][$key]='blah';

}

foreach($keys as $key)
{
        if(isset($b[$key]))
                $resulting_array[1][$key]=$b[$key];
        else
                $resulting_array[1][$key]='blah';

}

foreach($keys as $key)
{
        if(isset($c[$key]))
                $resulting_array[2][$key]=$c[$key];
        else
                $resulting_array[2][$key]='blah';

}

var_dump($resulting_array);

这正是你想要的

$a[0] = 'some A string';
$a[1] = 'some A string';
$a[2] = 'some A string';
$a[4] = 'some A string';
$a[6] = 'some A string';
$a[8] = 'some A string';
$a[10] = 'some A string';

$arr=[];

for($i=0; $i<=15; $i++){
    if(!isset($a[$i]))
        $a[$i]='blabla';
    array_push($arr, $a[$i]);
}

echo "<pre>";
print_r($arr);
echo "</pre>";
$a[0]='some a string';
$a[1]=“一些字符串”;
$a[2]=“一些字符串”;
$a[4]=“一些字符串”;
$a[6]=“一些字符串”;
$a[8]=“一些字符串”;
$a[10]=“一些字符串”;
$arr=[];

对于($i=0;$iOne,解决方案可能是循环数组,如果缺少键,请将“blabla”设置为该索引,然后在达到索引15时中断。如果没有任何数组具有[16],但其中一个数组具有[17],是否希望数据跳过[16]或者为所有表设置为blah?键索引号未知,一个表可以有15个,另一个表可以有1500个。键没有限制,每个“blah”必须放在其他表有有用数据的这些位置的表中。如何确定何时停止将“blah”插入数组,如果一个表可以有15个条目,另一个表可以有1个500?什么决定了数组的限制?键索引号未知,一个数组可以有15个,另一个可以有1500个。键没有限制,使用“c”数组:在其他数组“a”和“b”具有有用数据的位置,每个“blah”都必须放在“c”上,而不覆盖“c”的值,反之亦然,相同的wat到其他数组,并结合所有w我会的,谢谢!这个逻辑解决方案值得一试。我稍后会检查它并给出答案:)@DanielGalecki我刚刚再次修改了它。请使用最新版本。迪米,谢谢,就是这样。你很了解这个问题。我用了你的想法,制作了这样的东西:不,那不是,因为没有人知道任何数组有多大。
array(3) {
  [0]=>
  array(14) {
    [0]=>
    string(13) "some A string"
    [1]=>
    string(13) "some A string"
    [2]=>
    string(13) "some A string"
    [4]=>
    string(13) "some A string"
    [6]=>
    string(13) "some A string"
    [8]=>
    string(13) "some A string"
    [10]=>
    string(13) "some A string"
    [3]=>
    string(4) "blah"
    [5]=>
    string(4) "blah"
    [7]=>
    string(4) "blah"
    [9]=>
    string(4) "blah"
    [11]=>
    string(4) "blah"
    [12]=>
    string(4) "blah"
    [15]=>
    string(4) "blah"
  }
  [1]=>
  array(14) {
    [0]=>
    string(4) "blah"
    [1]=>
    string(13) "some B string"
    [2]=>
    string(4) "blah"
    [4]=>
    string(4) "blah"
    [6]=>
    string(4) "blah"
    [8]=>
    string(4) "blah"
    [10]=>
    string(4) "blah"
    [3]=>
    string(13) "some B string"
    [5]=>
    string(13) "some B string"
    [7]=>
    string(13) "some B string"
    [9]=>
    string(13) "some B string"
    [11]=>
    string(13) "some B string"
    [12]=>
    string(4) "blah"
    [15]=>
    string(4) "blah"
  }
  [2]=>
  array(14) {
    [0]=>
    string(13) "some C string"
    [1]=>
    string(13) "some C string"
    [2]=>
    string(4) "blah"
    [4]=>
    string(4) "blah"
    [6]=>
    string(13) "some C string"
    [8]=>
    string(4) "blah"
    [10]=>
    string(4) "blah"
    [3]=>
    string(13) "some C string"
    [5]=>
    string(4) "blah"
    [7]=>
    string(4) "blah"
    [9]=>
    string(13) "some C string"
    [11]=>
    string(4) "blah"
    [12]=>
    string(13) "some C string"
    [15]=>
    string(13) "some C string"
  }
}
$a[0] = 'some A string';
$a[1] = 'some A string';
$a[2] = 'some A string';
$a[4] = 'some A string';
$a[6] = 'some A string';
$a[8] = 'some A string';
$a[10] = 'some A string';

$arr=[];

for($i=0; $i<=15; $i++){
    if(!isset($a[$i]))
        $a[$i]='blabla';
    array_push($arr, $a[$i]);
}

echo "<pre>";
print_r($arr);
echo "</pre>";