2012-07-19 138 views
1

我有一个包含3个非常类似内容的数组的数组(示例如下)。我想知道是否有一种简单的方法将所有内容放入一个数组中,而不是3个单独的数组。我所尝试的一切似乎只是覆盖数据,而我只剩下来自第三个数组的信息。将2d数组转换为1d PHP

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 

任何解决方案?谢谢

+0

二维数组可能是最简单的选择。你为什么想要它是1D? – Celeritas 2012-07-19 21:33:38

回答

4

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

+0

好吧,我明白了,这是否意味着整数值也会被覆盖?整数是真正重要的部分。 – shanahobo86 2012-07-19 21:31:06

+0

那么,如果你正在循环2D数组,并且他们试图做如下操作:“$ one_dim_array [$ two_dim_array_key] = $ two_dim_array_value;”,那么您将简单地覆盖1D数组中每个重复2D数组键值的值。 – 2012-07-19 21:32:44

0
+0

我试过这样的array_merge: $ test = array_merge($ cluster [0],$ cluster [1]); 没有工作,我使用不正确? – shanahobo86 2012-07-19 21:35:47

+0

你在$ test中的结果是什么,或者你是否收到任何错误信息? – mdo 2012-07-19 21:36:58

+0

感谢您为我们输入的每一个人,我最终只是以一种不同的方式去做。在我的代码之前,我的代码有点傻了,像这样设置了阵列。 – shanahobo86 2012-07-20 18:27:01

1

我在想,如果有把一切都变成一个 阵列

简短的回答是没有一个简单的方法。

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

例如钥匙“美”将指向一个对象有一个变量设置为19,而另一变量设置为3

问:你需要知道原来阵列的值来自?如果是,那么我上面提到的将会失去那个财产。

0
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; 

            }         
+1

你应该添加一些解释 – 2015-07-15 20:39:07