在php中将项目分别推送到关联数组

时间:2018-07-16 05:14:40

标签: php arrays multidimensional-array

我有一个片段,

假设数组的长度不同,

$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]

        );

    }

这没用,有没有解决的办法?

2 个答案:

答案 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]
    ];
}

您没有指定所需的两个(最长/最短)版本中的一个事实,这表明您不认为问题一直存在,并且可能只是在做作业……无论如何,您只是这样伤害自己。