用字符串合并数组并删除PHP中的重复值

用字符串合并数组并删除PHP中的重复值,php,arrays,wordpress,Php,Arrays,Wordpress,从WP\u Query中,我正在将存储的字符串转储到单独的数组中: array(1) { [0]=> string(8) "Portugal" } array(1) { [0]=> string(5) "Spain" } array(1) { [0]=> string(5) "Italy" } array(1) { [0]=> string(6) "Monaco" } array(1) { [0]=> string(5) "S

WP\u Query
中,我正在将存储的字符串转储到单独的数组中:

array(1) {
  [0]=>
  string(8) "Portugal"
}
array(1) {
  [0]=>
  string(5) "Spain"
}
array(1) {
  [0]=>
  string(5) "Italy"
}
array(1) {
  [0]=>
  string(6) "Monaco"
}
array(1) {
  [0]=>
  string(5) "Spain"
}
array(1) {
  [0]=>
  string(9) "Lithuania"
}
我试图将这些数组合并到一个数组中,删除重复的字符串,如
“西班牙”
,并获取唯一值的数量。 我试图使用
数组\u merge()


但是如果没有任何好的结果,错误告诉我
警告:array_merge():Argument#2不是数组
有人能告诉我哪里漏掉了要点吗?非常感谢所有可能的帮助,我们将期待

要获取合并数组中唯一字符串的数量,必须在
WP\u Query

$tester = array();
而在
WP\u查询的while循环中
将每个字符串放入单独的数组中,并推送到
$tester

foreach((array)$array_string as $key=>$value[0]) {
           array_push($tester,$value);
               }
使用
array\u Unique()
函数可以找到数组
$tester
中的唯一值,这些函数应该放在
WP\u Query
while循环之后

$unique_array_string = array_unique($tester, SORT_REGULAR);

$unique_string_number =  sizeof($unique_array_string);

您将创建一个数组,并为西班牙等城市的名称获取该数组的键。它将始终提供不同的城市名称

     $data= array();    

    $data1 = array("Portugal");
    $data2 = array("Spain");
    $data3 = array("Italy");
    $data4 = array("Monaco");
    $data5 = array("Spain");
    $data6 = array("Lithuania");
    $merge = array_merge($data1, $data2,$data3,$data4,$data5,$data6);

    $data = array();

    foreach($merge as $value) {

        $data[$value] = $value;

    }
    echo '<pre>',print_r($data),'</pre>';
$data=array();
$data1=数组(“葡萄牙”);
$data2=阵列(“西班牙”);
$data3=阵列(“意大利”);
$data4=阵列(“摩纳哥”);
$data5=阵列(“西班牙”);
$data6=数组(“立陶宛”);
$merge=array\u merge($data1、$data2、$data3、$data4、$data5、$data6);
$data=array();
foreach($merge as$value){
$data[$value]=$value;
}
回显“”,打印($data),“”;

问题中的代码几乎不错。意图是正确的,但您忽略了一件简单的事情:您使用空数组初始化
$tester
,然后再也不向其中添加任何内容。最后,它仍然是空的,除了返回一个空数组之外,没有什么可做的

错误在以下行中:

$tester = array();
foreach($array_string as $value) {
    $tester = array_merge($tester, $value);
}
$result = array_unique($tester);
print_r($result);
不更改作为参数传递给它的数组。它返回代码忽略的新数组(而不是将其保存到
$tester

您的代码应该是这样的:

$result = array_unique(call_user_func_array('array_merge', $array_string));

解决方案#2 您可以使用调用并将
$array\u string
的值作为参数传递。返回的数组包含重复项;将其传递给将删除它们:

$result = array_unique(array_column($array_string, 0));
解决方案#3 完成相同任务的一种更简单(可能更快)的方法是使用将值获取到数组中,然后将其传递到
array\u unique()
,当然:


此解决方案仅适用于PHP 5.5或更高版本(较旧版本中不存在
array\u column()
函数)。

什么是$value类型
array\u merge
不会更改第一个参数,而是返回结果数组,因此:
$tester=array\u merge($tester,$value)。但是,使用
array\u map
可能更优雅。什么是
$array\u string
?在将其作为答案发布之前,您是否尝试过该代码。
$result = array_unique(call_user_func_array('array_merge', $array_string));
$result = array_unique(array_column($array_string, 0));