【问题标题】:How to combine two PHP arrays and display results according to index number?如何组合两个PHP数组并根据索引号显示结果?
【发布时间】:2012-04-20 13:36:56
【问题描述】:

我创建了两个数组。首先,数组显示没有任何顺序的元素。所以,我必须先按字母顺序和从低到高对它们进行排序。一旦按顺序,需要组合的两个数组以这样的方式组合,即每个数组中的每个元素都根据它们的索引号组合

我的目标: a0 b1 c2 d3 e4 f5 g6

我得到了什么: abcdefg0123456

$array1 = array("b", "f", "g", "a", "c", "d", "e");
    $array2 = array("5", "0", "1", "4", "3", "2", "6");
    sort($array1);
    sort($array2);

    echo "<pre> \n";
    print_r($array1);
    echo "</pre> \n";

    echo "<pre> \n";
    print_r($array2);
    echo "</pre> \n";

    echo "<h3 style='font-family:Helvetica'>Combining Arrays</h3>";
    $array3 = array_merge($array1, $array2);


    for($i = 0; $i < 7; $i++)
    {
        for($j = 0; $j < 7; $j++)
        {
            echo $array3[$i] [$j];
        }
    }

【问题讨论】:

  • 您的问题很令人困惑,我的意思是您的目标类似于 a0 b1 c2 d3 e4 f5 g6 但是您应该如何知道 a 要与 0 结合,这是否意味着您正在尝试用 a0 b1 之类的数字映射字母,从这两个数组的外观来看,这怎么可能?你确定这是你需要的吗?可能我错了,但这看起来确实很令人困惑,如果你想得到像 b5 f0 g1 这样的答案 ...
  • 抱歉造成误会。所以原始数组包含没有顺序的字母和数字。然后我必须按字母顺序从低到高排序。订购后,我需要组合元素。
  • 请采纳!

标签: php arrays loops indexing


【解决方案1】:

array_merge 无法做到这一点。使用简单的循环。

   

    $array1 = array("b", "f", "g", "a", "c", "d", "e");
    $array2 = array("5", "0", "1", "4", "3", "2", "6");
    sort($array1);
    sort($array2);
    for($j = 0; $j < 7; $j++){
        echo "{$array1[$j]}{$array2[$j]} ";
    }

http://ideone.com/LLdVm

【讨论】:

  • 如何给出他想要的答案??这不是像 b5 f0 g1 .... 吗??
  • 它给了我aa bb cc dd ee ff gg,这至少比我得到的更接近:)
  • 有效! (我没有注意到 $array1 重复了两次!)非常感谢。还有一个问题,这种情况下大括号有什么用?
  • 哎呀,我似乎错过了那里的排序部分,这应该可以,抱歉
  • bd.php.net/manual/en/…中查看复杂的卷曲语法
【解决方案2】:

array_merge 不知道您希望它们排序的顺序。它甚至不知道内容是字母还是数字,更不用说与先前数组的内容对应的字母表索引了!

简而言之,你不能使用array_merge 来做你想做的事。您只需要创建自己的循环即可解决问题。

您的代码甚至没有意义 - 您有两个一维数组,您将它们连接起来然后像二维数组一样打印??

【讨论】:

  • 那我需要用什么?如您所见,我没有使用 PHP 的经验。我需要帮助。
【解决方案3】:

我认为他只想要一个包含他所说的元素的数组:

a0 b1 c2 d3 e4 f5 g6

这应该可行:

$array3 = array();
for($i = 0; $i < 7; $i++){
  $array3[] = $array1[$i].$array2[$i];
}
echo "<pre> \n";
print_r($array3);
echo "</pre> \n";

【讨论】:

  • 我想以他的例子,也许他不想要一个组合数组而只想要输出。
  • 正确,输出是我的目标。
  • 然后将最后三行替换为:foreach($array3 as $item){echo "$item ";} 就可以进一步操作$array3,或者直接根据@输出shiplu.mokadd.im 的回答
【解决方案4】:

这是组合的最佳方式 - 使用array_combine

    $array1 = array("b", "f", "g", "a", "c", "d", "e");
        $array2 = array("5", "0", "1", "4", "3", "2", "6");
        sort($array1);
        sort($array2);

        echo "<pre> \n";
        print_r($array1);
        echo "</pre> \n";

        echo "<pre> \n";
        print_r($array2);
        echo "</pre> \n";

        echo "<h3 style='font-family:Helvetica'>Combining Arrays</h3>";

//        $array3 = array_merge($array1, $array2);


        $array3 = array_combine($array1, $array2);


        echo "<pre> \n";
        print_r($array3);
        echo "</pre> \n";

        foreach($array3 as $letter => $number){
            echo "$letter:$number <br />";
        }

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多