Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将2d数组转换为1d PHP_Php_Arrays - Fatal编程技术网

将2d数组转换为1d PHP

将2d数组转换为1d PHP,php,arrays,Php,Arrays,我有一个数组(下面的示例),包含3个内容非常相似的数组。我想知道是否有一种简单的方法可以将所有内容放在一个数组中,而不是三个单独的数组中。我尝试的一切似乎都只是覆盖了数据,只剩下第三个数组中的信息 array 0 => array 'america' => int 19 'music' => int 6 'states' => int 5 'bank' => int 5 1 => ar

我有一个数组(下面的示例),包含3个内容非常相似的数组。我想知道是否有一种简单的方法可以将所有内容放在一个数组中,而不是三个单独的数组中。我尝试的一切似乎都只是覆盖了数据,只剩下第三个数组中的信息

array
  0 => 
    array
      'america' => int 19
      'music' => int 6
      'states' => int 5
      'bank' => int 5
  1 => 
    array
      'america' => int 19
      'home' => int 3
      'society' => int 2
      'writers' => int 2
   2 => 
    array
      'america' => int 19
      'lutheran' => int 4
      'church' => int 4
      'national' => int 4
      'cruises' => int 3
理想情况下,最终结果如下所示:

array
          'america' => int 19
          'music' => int 6
          'states' => int 5
          'bank' => int 5
          'america' => int 19
          'home' => int 3
          'society' => int 2
          'writers' => int 2
          'america' => int 19
          'lutheran' => int 4
          'church' => int 4
          'national' => int 4
          'cruises' => int 3

有什么解决办法吗?谢谢

您将无法拥有具有相同键值(即“America”的3个键等)的关联数组。当您尝试在数组中设置这些键时,只需覆盖上一个值。

您将无法拥有具有相同键值的关联数组(即3个“America”键等)。当您尝试在数组中设置这些键时,只需覆盖上一个值。

我想知道是否有一种简单的方法把所有的东西都放在一起 排列

简而言之,答案是否定的

您可以使用原始int的变量和它出现的次数的值创建一个类,然后将数组指向该类的对象。同样的想法也可以用链表来实现,尽管这两种方法都比你已经拥有的要复杂

例如,键“america”将指向一个对象,其中一个变量设置为19,另一个变量设置为3

问题:您需要知道值来自哪个原始数组吗?如果是的话,那么我上面提到的将失去该财产

function array_2d_to_1d($array)
                                    {
                                        $my_val=array();
                                        $my_key=array();
                                        foreach ($array as $value) {
                                             array_push($my_val, $value['cat_title']);
                                             array_push($my_key, $value['cat_id']);
                                         }

                                        $result = array_combine($my_key, $my_val);
                                        return $result;

                                    }                                
我想知道是否有一种简单的方法把所有的东西都放在一起 排列

简而言之,答案是否定的

您可以使用原始int的变量和它出现的次数的值创建一个类,然后将数组指向该类的对象。同样的想法也可以用链表来实现,尽管这两种方法都比你已经拥有的要复杂

例如,键“america”将指向一个对象,其中一个变量设置为19,另一个变量设置为3


问题:您需要知道值来自哪个原始数组吗?如果是,则我上面提到的内容将丢失该属性。

好的,我理解,这是否意味着整数值也将被覆盖?int是非常重要的部分。如果你在2D数组中循环,他们试图做类似的事情:“$one\u dim\u array[$two\u dim\u array\u key]=$two\u dim\u array\u value;”,那么你只需为每个重复的2D数组键值覆盖1D数组中的值。好的,我明白了,这是否意味着整数值也会被覆盖?int是非常重要的部分。如果你在2D数组中循环,他们试图做类似的事情:“$one\u dim\u array[$two\u dim\u array\u key]=$two\u dim\u array\u value;”,那么你只需为每个重复的2D数组键值覆盖1D数组中的值。2D数组可能是最简单的选择。为什么希望它是1D?2D阵列可能是最简单的选择。为什么希望它是1D?我试过像这样的数组合并:$test=array\u merge($cluster[0],$cluster[1]);没用,是我用错了吗?你在$test中的结果是什么?或者你收到了任何错误消息吗?谢谢大家的输入,最后我用了不同的方法。在像这样设置数组之前,我的代码有点傻。我尝试过像这样的数组合并:$test=array\u merge($cluster[0],$cluster[1]);没用,是我用错了吗?你在$test中的结果是什么?或者你收到了任何错误消息吗?谢谢大家的输入,最后我用了不同的方法。在像这样设置数组之前,我的代码有点傻。你应该添加一些解释你应该添加一些解释
function array_2d_to_1d($array)
                                    {
                                        $my_val=array();
                                        $my_key=array();
                                        foreach ($array as $value) {
                                             array_push($my_val, $value['cat_title']);
                                             array_push($my_key, $value['cat_id']);
                                         }

                                        $result = array_combine($my_key, $my_val);
                                        return $result;

                                    }