- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为 PHP 中的数据结构而苦苦挣扎。我正在尝试使用 array_merge_recursive
通过类似的键来压缩数组,然后获取所有值而不是覆盖它们。这就是我选择 array_merge_recursive
而不是 array_merge
的原因。
我的数组类似于:
Array
(
[0] => Array
(
[App] => APP1
[Type] => DB
)
[1] => Array
(
[App] => APP1
[Type] => WEBSITE
)
[2] => Array
(
[App] => APP2
[Type] => IOS
)
)
我期待 array_merge_recursive
像键一样组合,然后将其他元素分组到数组中,但这不是我看到的行为。
我希望得到如下数组:
Array
(
[0] => Array
(
[App] => APP1
[Type] => Array
(
[0] => DB
[1] => WEBSITE
)
)
[1] => Array
(
[App] => APP2
[Type] => IOS
)
)
最佳答案
array_merge_recursive()
不做你认为它做的事。您正在寻找一个根据对您有帮助的特定规则重构数组的函数,因此没有内置的 php 函数。 IE。 PHP 怎么知道您希望新数组由 APP
而不是 TYPE
构造。假设您的数组总是那么简单,您想要的函数的最简单版本如下所示:
function sortByApp($array){
$result = array();
foreach($array as $row){
if(!isset( $result[ $row['APP'] ] ) {
$result[ $row['APP'] ] = array(
'APP' => $row['APP'],
'TYPE' => array( $row['TYPE'] )
);
}else{
$result[ $row['APP'] ]['TYPE'] = array_merge( $result[ $row['APP'] ]['TYPE'], array($row['TYPE']) );
}
}
$result = array_values($result); //All this does is remove the keys from the top array, it isn't really necessary but will make the output more closely match what you posted.
return $result
}
请注意,在此解决方案中,每个 APP
中的 TYPE
键的值将始终是一个数组。在我看来,这使得以后处理数据更容易,因为您不必担心检查字符串还是数组。
关于PHP array_merge_recursive 与一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167765/
所以我想从一个文本文件动态构建一个多维数组,除了数字键让我感到困惑之外,一切都完美无缺...... 文本文件看起来像这样: a=1 b.c=2 b.d.0.e=3 b.d.0.f=4 b.d.1.e=
所以基本上我有这两个数组我想合并...... array(1) { ["first"]=> array(1) { ["second"]=> arra
我已经浏览了这里的帖子,但找不到任何似乎可以解决我的问题的内容。我对 PHP/MySQL 相当陌生,我似乎无法弄清楚为什么这个 array_merge_recursive 函数一直告诉我我的第一个数组
$array1 = [ '1' => '11', 'b' => 1, 3 => 33, 8 => 8 ]; $array2 = [ '1' => '22
$php -a php > $data1 = ['tag' => 'div', 'classes' => [1,2,3]]; php > $data2 = ['tag' => 'section', '
我正在为 PHP 中的数据结构而苦苦挣扎。我正在尝试使用 array_merge_recursive 通过类似的键来压缩数组,然后获取所有值而不是覆盖它们。这就是我选择 array_merge_rec
我只想合并 $a = array("59745506"=>array("up" => 0,)); $b = array("59745506"=>array("text" => "jfrj")); $c
php中array_merge_recursive函数用于将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面,返回作为结果的数组。本文章将详细介绍array_merge_recur
我有这个代码 $a1 = array( 'success' => TRUE, 'data' => array( 'foo' => ar
我尝试递归合并以下 2 个数组,这样我就不会丢失数据,但我也不希望重复任何数据。 $a = array( 'group1' => array( 'names' => array
是否有递归合并数组的方法,就像 PHP 的 array_merge_recursive() 函数一样,除了整数键被视为字符串键? (对于过程而言,键保持可解析为整数很重要。) 例如: $a = arr
我有一些默认配置,以及一些可配置的特定配置。我需要将特定配置合并到默认配置中。 在特定配置选项不存在的情况下, 将使用默认选项。 在 value 的情况下是标量,具体配置应该应用 在 value 的情
我是一名优秀的程序员,十分优秀!