我有一个片段,
假设数组的长度不同,
$name1Array
的长度为8,$name2Array
的长度为5
for($i = 0; $i < count ( $name1Array ); $i ++)
{
$finalArray ["something"] [] = array (
"name1" => $name1Array [$i],
"name2" => $name2Array [$i]
);
}
上面的代码段工作正常,但是当$ name1Array和$ name2Array的长度不同时?我为每个人都尝试了2个for循环,
for($i = 0; $i < count ( $name1Array ); $i ++)
{
$finalArray ["something"] [] = array (
"name1" => $name1Array [$i]
);
}
for($i = 0; $i < count ( $name2Array ); $i ++)
{
$finalArray ["something"] [] = array (
"name2" => $name2Array [$i]
);
}
这没用,有没有解决的办法?
答案 0 :(得分:0)
其中之一是 从数组和循环中找到最大计数值,直到最大数组值。
<?php
$array1 = array("a","b","c","d");
$array2 = array("1","2","3","4","5");
$count1 = count ( $array1 );$count2 = count ( $array2 );
$looptill = max($count1,$count2);
for($i = 0; $i < $looptill ; $i ++)
{
$finalArray ["something"] [] = array (
"name1" => $array1 [$i],
"name2" => $array2 [$i]
);
}
echo "<pre>";
print_r($finalArray);
exit;
答案 1 :(得分:0)
目前尚不清楚您的预期结果应该是什么,所以我在这里猜测您想要通过使用null
或其他空值填充缺失值来获得最长的结果。
尝试一下:
$c1 = count($name1Array);
$c2 = count($name2Array);
$cmax = max($c1, $c2);
for ($i = 0; $i < $cmax; $i++)
{
$finalArray["something"][] = [
"name1" => $i < $c1 ? $name1Array[$i] : null,
"name2" => $i < $c2 ? $name2Array[$i] : null
];
}
或者,您可以通过省略两个数组中都不存在的结果来获得最短的结果:
$c1 = count($name1Array);
$c2 = count($name2Array);
$cmin = min($c1, $c2);
for ($i = 0; $i < $cmin; $i++)
{
$finalArray["something"][] = [
"name1" => $name1Array[$i],
"name2" => $name2Array[$i]
];
}
您没有指定所需的两个(最长/最短)版本中的一个事实,这表明您不认为问题一直存在,并且可能只是在做作业……无论如何,您只是这样伤害自己。