假设我们有一个需要转换为行的数组
由此:
Array
(
[subject] => Array
(
[0] => EDN:LOC:DERR
[1] => EDN:LOC:DOXX
[2] => EDN:LOC:NTTT
[3] => EDN:LOC:NAGA
)
[object] => Array
(
[0] => ABS:D01::ADFPAZ01
[1] => ABS:D01::DOXYWITX
[2] => ABS:D01::NAGBAAD2
[3] => ABS:D01::NAGGAAD2
)
[units] => Array
(
[0] => ABS:D06::UNAA
[1] => ABS:D06::UMMM
[2] => ABS:D06::UPOP
[3] => ABS:D06::UPOP
)
对此:
[0] => "'DERR' , 'ADFPAZ01' , 'UNAA'"
[1] => "'DOXX' , 'DOXYWITX' , 'UMMM'"
[2] => "'NTTT' , 'NAGBAAD2' , 'UPOP'"
[3] => "'NAGA' , 'NAGGAAD2' , 'UPOP'"
所以我需要用一种模式清理阵列并压缩成线。
我使用以下功能管理紧凑视图
$array_res = array();
for ($i=0; $i<=$totalEntries-1; $i++) {
array_push($array_res, implode("', '", array_column($array_of_arrays, $i)));
}
我的正则表达式模式是$pattern = '([^.:]*$)';
它从字符串末尾收集一系列字母,直到找到一个冒号。我曾经preg_match($pattern, $string, $match)
将正确的字符串接收到 $match 变量中。
但是,我不能将上述两个过程与 for 循环中的 array_filter 或 array_map 结合起来。
编辑:请注意,可以有一个子数组包含不带冒号的值。在这种情况下,我们必须按原样获取值
[units] => Array
(
[0] => NULL
[1] => VALUE1
[2] => VALUE2
[3] => NULL
)