【问题标题】:How to combine multiple arrays with identical keys into a single array?如何将具有相同键的多个数组组合成一个数组?
【发布时间】:2011-04-13 14:43:59
【问题描述】:

我是 php 新手。我需要帮助。 我有一个数组作为

Array ( [_] => Array ( [0] => [1] => )
        [123_] => Array ( [0] => 123 [1] => ) 
        [1234_] => Array ( [0] => 1234 [1] => )
      )
Array ( [_] => Array ( [0] => [1] => )
        [12345_] => Array ( [0] => 12345 [1] => ) 
        [1234_] => Array ( [0] => 1234 [1] => )
      )

所以..我的问题是我想要一个包含所有这些键和值的数组

Array ( [_] => Array ( [0] => [1] => )
        [123_] => Array ( [0] => 123 [1] => ) 
        [1234_] => Array ( [0] => 1234 [1] => )
        [_] => Array ( [0] => [1] => )
        [12345_] => Array ( [0] => 12345 [1] => ) 
        [1234_] => Array ( [0] => 1234 [1] => )
  )

会有重复的键和值..但我希望它们都作为一个数组..任何帮助请..

【问题讨论】:

  • 在提供变量转储时请使用print_rvar_dump 或更好的var_export
  • 那是不可能的。当你调用“123_”元素时,应该是哪一个?
  • 你用这个数组做什么?它代表什么?您是要检测重复项并合并它们,还是要通过提供唯一键来防止重复项?
  • 您实际上自己给出了答案:“会有重复的键和值”。如果它是重复的,它就不再是键了,对吗?
  • 哦..我很抱歉。我没有观察到,我只是举个例子。忽略这一点。没有相同的键..实际上这是我通过循环查询得到的结果集..但是不同的键有相同的值..你能解释一下如何将所有这些作为单个数组获取..thx提前。

标签: php arrays merge multidimensional-array


【解决方案1】:

正如其他人所说,不可能有一个带有重复键的数组。但是你可以构建一个数组数组:

<?php
$arr1 = array( '_' => Array ( '0' => '', '1' => ''),
             '123_' => Array ( '0' => 123, '1' => ''), 
             '1234_' => Array ( '0' => 1234, '1' => '')
);
$arr2 = array ( '_' => Array ( '0' => '', '1' => ''),
               '12345_' => Array ( '0' => 12345, '1' => ''), 
               '1234_' => Array ( '0' => 1234, '1' => '')
);
$result = array();
foreach( $arr1 as $key => $val) {
  $result[] = array('key'=>$key, 'value'=>$val);
}
foreach( $arr2 as $key => $val) {
  $result[] = array('key'=>$key, 'value'=>$val);
}
print_r($result);
?>

输出:

Array
(
    [0] => Array
        (
            [key] => _
            [value] => Array
                (
                    [0] =>
                    [1] =>
                )

        )

    [1] => Array
        (
            [key] => 123_
            [value] => Array
                (
                    [0] => 123
                    [1] =>
                )

        )

    [2] => Array
        (
            [key] => 1234_
            [value] => Array
                (
                    [0] => 1234
                    [1] =>
                )

        )

    [3] => Array
        (
            [key] => _
            [value] => Array
                (
                    [0] =>
                    [1] =>
                )

        )

    [4] => Array
        (
            [key] => 12345_
            [value] => Array
                (
                    [0] => 12345
                    [1] =>
                )

        )

    [5] => Array
        (
            [key] => 1234_
            [value] => Array
                (
                    [0] => 1234
                    [1] =>
                )

        )

)

【讨论】:

    【解决方案2】:

    不可能。 PHP 数组不能有两个相同的键。

    【讨论】:

    • 对不起。我改变了查询。所以我得到了不同的钥匙。但值可能在一段时间内相等。我们可以在一个数组中形成它吗?数组 ( [] => 数组 ( [0] => [1] => ) [123_aug] => 数组 ( [0] => 123 [1] => ) [1234_aug] => 数组 ( [0 ] => 1234 [1] => ) ) 数组 ( [] => 数组 ( [0] => [1] => ) [12345_aug] => 数组 ( [0] => 123 [1] => ) [123456_aug] => 数组 ( [0] => 1234 [1] => ) ) ii 如何形成这个..
    • @bsrreddy:您仍然拥有两个数组中通用的键 _
    • 哦..我很抱歉。我没有观察到,我只是举个例子。忽略这一点。没有相同的键..实际上这是我通过循环查询得到的结果集..希望你理解。
    【解决方案3】:

    看看 PHP 的array_merge()-function

    【讨论】:

    • 那些不是使用合并功能的不同数组..这些又在一个数组中。所以我希望这是一个单一的数组..谢谢你的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 2014-09-17
    相关资源
    最近更新 更多