我有2个阵列
第一个是这样的
$sql1 = "SELECT userid FROM interest where interest='".$interest."' and userid!='".$myuserid."'";
$result1 = mysqli_query($conn, $sql1);
if (mysqli_num_rows($result1) > 0)
{
while($row1 = mysqli_fetch_assoc($result1))
{
$userid = $row1["userid"];
$user[] = array($userid);
}
echo "<pre>";
print_r ($user);
echo "</pre>";
}
它的o / p就像这样
Array
(
[0] => Array
(
[0] => 8
)
[1] => Array
(
[0] => 9
)
[2] => Array
(
[0] => 2
)
[3] => Array
(
[0] => 1
)
)
第二个是这样的
$sql = "SELECT * FROM block where blockedby='".$myuserid."'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$blockeduser=$row["blockeduser"];
$block[] = array($blockeduser,$myuserid);
}
echo "<pre>";
print_r ($block);
echo "</pre>";
}
它的o / p就像这样
Array
(
[0] => Array
(
[0] => 1
[1] => 2
)
)
我希望比较这两个数组并删除结果数组中的相似值..我应该得到的数组作为最终结果应该是这样的
Array
(
[0] => Array
(
[0] => 8
)
[1] => Array
(
[0] => 9
)
)
我试过
$unique=array_unique( array_merge($block, $user) );
$block=array_diff($unique, $block);
print_r($block);
但我得到了这个结果
Array
(
)
任何人都可以告诉我如何实现这一结果
答案 0 :(得分:0)
Array_unique无法使用多维数组。我们可以通过array_filter实现它的功能
$values = array();
$new = array_filter(array_merge($block, $user),
function($i) use(&$values) {
if( !in_array($i[0], $values))
{ $values[] = $i[0]; return true;}
return false; });
答案 1 :(得分:0)
由于array_unique无法使用多维数组。
可能有更好的方法......但这对我来说可以从多维数据中删除类似的值...
$array1 = array(
array("a" => "green"),
array("b" => "brown"),
array("c" => "blue")
);
$array2 = array(
array("a" => "red"),
array("b" => "yellow"),
array("c" => "blue")
);
首先使用 array_merge_recursive 合并数组,因为这些是多维数组
$array = array_merge_recursive($array1, $array2);
然后以递归方式从数组中获取所有值
$values="";
function get_values($ inarray){ 全球$值;
foreach ($inarray as $key => $value) {
if(is_array($value)){
get_values($value);
}else{
$values.=",".$value;
echo $key."=>".$value."<br/>";
}
}
return $values;
}
$values=get_values($array);
//返回值 //,绿色,棕色,蓝色,红色,黄色,蓝色
$values=ltrim($values,",");
//在ltrim返回值之后 //绿色,棕色,蓝色,红色,黄色,蓝色
$valuesArr=explode(",",$values);
这里使用explode将所有值作为ondimensional数组 现在我们可以使用array_unique函数来消除数组之间的类似值。
$uniqueValue=array_unique($valuesArr);
print_r($uniqueValue);
不重复任何值结果
Array
( [0] =&gt;绿色 [1] =&gt;棕色 [2] =&gt;蓝色 [3] =&gt;红色 [4] =&gt;黄色 )