【问题标题】:PHP: Issue combining sub-arrays into new arrayPHP:将子数组组合成新数组的问题
【发布时间】:2013-12-26 15:48:12
【问题描述】:

正在处理投票脚本,但我对投票的选项没有什么问题,创建了一个新数组。

实际示例数组包含 3 个子数组,其中包含选项、票数和百分比:

Array
        (
            [poll_options] => Array
                (
                    [0] => Good
                    [1] => Bad
                    [2] => I do not care
                )

            [poll_answers] => Array
                (
                    [0] => 3
                    [1] => 1
                    [2] => 1
                )

            [poll_percentage] => Array
                (
                    [0] => 60
                    [1] => 20
                    [2] => 20
                )

        )

现在我需要创建一个新的值数组,结果必须是这样的:

Array
        (
            [0] => Array
                (
                    [option] => Good
                    [answers] => 3
                    [percentage] => 60
                )

            [1] => Array
                (
                    [option] => Bad
                    [answers] => 1
                    [percentage] => 20
                )

            [2] => Array
                (
                    [option] => I do not care
                    [answers] => 1
                    [percentage] => 20
                )

        )

到目前为止,无论尝试什么,我都无法达到我想要的结果。 有什么想法吗?

【问题讨论】:

  • 你尝试什么,发布代码! 10x
  • @HaimEvgi:发布我今天尝试的所有内容,我会达到问题的最大允许字符数。我认为对于这个问题,不需要像我那样发布更多代码。

标签: php arrays foreach while-loop array-merge


【解决方案1】:
$new_array = array();
foreach (array_keys($old_array['poll_options']) as $i) {
    $new_array[] = array(
        'option' => $old_array['poll_options'][$i],
        'answers' => $old_array['poll_answers'][$i],
        'percentage' => $old_array['poll_percentage'][$i]
    );
}

DEMO

【讨论】:

  • 我想就是这样。让我快速测试一下。
  • 是的,行得通!谢谢 Barmer,我会在 3 分钟内将此标记为正确答案!
  • 这个琐碎循环的哪一部分如此困难?
  • 我完全忘记了 'array_keys()',总是被 'array_merge()' 卡住。我老了...再次感谢:)
【解决方案2】:
$newArray=Array();
$count=count($array["poll_oprions"]);
for ($i = 0; $i < $count; $i++) {
    $newElem=Array(); 
    $newElem["option"]=$array["poll_option"][$i];
    $newElem["answers"]=$array["poll_answers"][$i];
    $newElem["percentage"]=$array["poll_percentage"][$i];
    $newArray[]=$newElem;
}

【讨论】:

    【解决方案3】:

    使用array_column():

    $new_array = array();
    $new_array[] = array(
        'option' => array_column($old_array, 0),
        'answers' => array_column($old_array, 1),
        'percentage' => array_column($old_array, 2),
    );
    

    Demo.

    请注意,此函数是 => PHP 5.5.0。如果您使用的是旧版本的 PHP,则可以使用用普通 PHP 编写的实现(由该函数的作者编写)。我是available on GitHub

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2012-07-18
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多