用字符串合并数组并删除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));