【发布时间】:2020-04-19 05:50:20
【问题描述】:
我有以下似乎很常见的问题,但不知道哪个数组函数可能适用于以下格式:
(已经尝试过array_merge、array_merge_recursive、array_combine、array_splice,但没有按预期工作。)
Array
(
[0] => Array
(
[r_id] => 11
[r_sid] => RC
[d_id] => 2
)
[1] => Array
(
[r_id] => 7
[r_sid] => RC
[c_id] => 51
)
[2] => Array
(
[r_id] => 6
[r_sid] => JN
[c_id] => 52
)
[3] => Array
(
[r_id] => 7
[r_sid] => JN
[c_id] => 51
)
[4] => Array
(
[r_id] => 7
[r_sid] => LG
[c_id] => 51
)
[5] => Array
(
[r_id] => 7
[r_sid] => BN
[c_id] => 51
)
[6] => Array
(
[r_id] => 6
[r_sid] => IVS
[c_id] => 52
)
[7] => Array
(
[r_id] => 7
[r_sid] => IVS
[c_id] => 51
)
)
现在,我需要通过常见的r_sid & c_id 键合并这个数组值;唯一的特殊情况是如果有一个d_id 键而不是c_id,那么我们将它与数组中具有相似r_sid 的任何值合并/组合。
如果这样更容易理解,最终的解决方案需要如下所示:
Array
(
[0] => Array
(
[r_id] => 11,7
[r_sid] => RC
[d_id] => 2
[c_id] => 51
)
[1] => Array
(
[r_id] => 6,7
[r_sid] => JN, IVS
[c_id] => 52,51
)
)
与任何人都不匹配的r_sid 值需要被丢弃。
感谢任何帮助。非常感谢!
【问题讨论】:
-
没有具体的函数来处理你想要的各种组合,你需要自己写一些东西。
-
您如何决定不将所有带有
c_id = 51或c_id = 52的值合并在一起? -
只有 d_id 优先,并且 , 存在于一个或两个值中。因此,如果存在,它将需要找到与 r_sid 匹配的其他值。否则,这个数组填充的总是 c_id。
-
@nigel ren:我确实理解它更具体一些,但我一直在编写自己的子函数,最终来到这个数组。只是无法解决最后一个匹配项。
-
您能否将到目前为止的代码添加到问题中,因为完成它可能比做一些全新的事情更容易(尽管也可能会建议这样做)。
标签: php arrays multidimensional-array array-merge array-combine