我必须进行数组处理,在文本字段中可能会得到重复的数据,我想将两个数组合并为一个具有唯一文本的
$a = array(
array(
'domain' => 'default',
'text' => 'a',
),
array(
'domain' => 'default',
'text' => 'b',
),
);
$b = array(
array(
'domain' => 'default',
'text' => 'a',
),
array(
'domain' => 'default',
'text' => 'c',
),
);
预期结果
array(
array(
'domain' => 'default',
'text' => 'a',
),
array(
'domain' => 'default',
'text' => 'c',
),
array(
'domain' => 'default',
'text' => 'b',
),
);
这就是我现在的做法
$merged = array_merge($a, $b);
$extractText = array_map(function($item) {
return $item['text'];
}, $merged);
$result = array_map(function($item) {
return array(
'domain' => 'default',
'text' => $item
);
}, array_unique($extractText));
var_dump($result);
寻找原始的PHP方法或另一种更有效的方法来实现这一目标。
答案 0 :(得分:4)
这应该有效-
$merged =array_merge($a, $b);
array_unique($merged, SORT_REGULAR);
输出
array:3 [▼
0 => array:2 [▼
"domain" => "default"
"text" => "a"
]
1 => array:2 [▼
"domain" => "default"
"text" => "b"
]
3 => array:2 [▼
"domain" => "default"
"text" => "c"
]
]
SORT_REGULAR-正常比较项目(不要更改类型)
答案 1 :(得分:1)
您可以使用array_unique
来完成这项工作,技巧是必须将SORT_REGULAR
指定为第二个参数。这样可以防止array_unique
尝试将数组值转换为字符串:
$result = array_unique(array_merge($a, $b), SORT_REGULAR);
print_r($result);
输出:
Array (
[0] => Array (
[domain] => default
[text] => a
)
[1] => Array (
[domain] => default
[text] => b
)
[3] => Array (
[domain] => default
[text] => c
)
)