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

时间:2017-06-26 01:45:22

标签: php arrays wordpress

WP_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"
}

我正在尝试将这些数组合并到一个数组中,删除重复的字符串,如"Spain",并获取唯一值的数量。 我试图使用array_merge()

$tester = array();
    foreach($array_string as $value) {
                array_merge($tester, $value);
             }
          $result = array_unique($tester);
         print_r($result);

但是没有任何不错的结果,错误告诉<b>Warning</b>: array_merge(): Argument #2 is not an array有人能告诉我哪里错过了这一点吗?非常感谢所有可能的帮助,将会期待。

3 个答案:

答案 0 :(得分:1)

问题中贴出的代码几乎是好的。意图是正确的,但你错过了一个简单的事情:你用一个空数组初始化Y=[ 1 2 3 ; 4 5 6 ; 3 4 5]; h = bar3(Y); cm = get(gcf,'colormap'); % Use the current colormap. cnt = 0; for jj = 1:length(h) xd = get(h(jj),'xdata'); yd = get(h(jj),'ydata'); zd = get(h(jj),'zdata'); delete(h(jj)) idx = [0;find(all(isnan(xd),2))]; if jj == 1 S = zeros(length(h)*(length(idx)-1),1); dv = floor(size(cm,1)/length(S)); end for ii = 1:length(idx)-1 cnt = cnt + 1; S(cnt) = surface(xd(idx(ii)+1:idx(ii+1)-1,:),... yd(idx(ii)+1:idx(ii+1)-1,:),... zd(idx(ii)+1:idx(ii+1)-1,:),... 'facecolor',cm((cnt-1)*dv+1,:)); end end rotate3d ,然后再从未添加任何东西。最后,它仍然是空的,array_unique()无关,只能返回一个空数组。

错误在于:

$tester

array_merge()不会更改作为参数传递给它的数组。它返回一个代码忽略的新数组(而不是将其保存到array_merge($tester, $value); )。

这就是你的代码的样子:

$tester

解决方案#2

您可以使用call_user_func_array()来调用array_merge()并将$tester = array(); foreach($array_string as $value) { $tester = array_merge($tester, $value); } $result = array_unique($tester); print_r($result); 的值作为参数传递。返回的数组包含重复项;将其传递给array_unique()会将其删除:

$array_string

解决方案#3

更简单(也可能更快)的方法是使用array_column()将值输入数组,然后将其传递给$result = array_unique(call_user_func_array('array_merge', $array_string)); ,当然:

array_unique()

此解决方案仅适用于PHP 5.5或更高版本($result = array_unique(array_column($array_string, 0)); 功能在旧版本中不存在。)

答案 1 :(得分:-1)

要获取合并数组中唯一字符串的数量,您必须在WP_Query之前设置空数组

$tester = array();

WP_Query内部while循环每个字符串放入单独的数组并推送到$tester

foreach((array)$array_string as $key=>$value[0]) {
           array_push($tester,$value);
               }

使用$tester函数找到数组array_unique()中的唯一值,这些函数应放在WP_Query while循环之后。

$unique_array_string = array_unique($tester, SORT_REGULAR);

$unique_string_number =  sizeof($unique_array_string);

答案 2 :(得分:-1)

您将创建一个数组,并将获取数组的键,用于像spain ..等城市名称。它将始终为不同的城市命名......

     $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>';