将2d数组转换为1d PHP
我有一个数组(下面的示例),包含3个内容非常相似的数组。我想知道是否有一种简单的方法可以将所有内容放在一个数组中,而不是三个单独的数组中。我尝试的一切似乎都只是覆盖了数据,只剩下第三个数组中的信息将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
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;
}