PHP如何组合多个数组
我在组合几个数组时遇到了一个问题,即第二个数组的索引必须存在,但不能作为合并数组的值 例如,这3个阵列: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
$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>";