php array_intersect 显示没有交集
Posted
技术标签:
【中文标题】php array_intersect 显示没有交集【英文标题】:php array_intersect is showing no intersection 【发布时间】:2012-08-27 21:53:11 【问题描述】:我有两个数组 $t1 和 $t2。当我打印出来时,我得到以下信息:
t1:
Array ( [0] => Christina Aguilera [1] => Iron Maiden [2] => Bob Marley )
t2:
Array ( [0] => Bob Marley )
我正在尝试通过 array_intersect 函数获取数组的公共元素,并且我正在使用以下行:
$intersection = array_intersect($t1,$t2);
但是,由于某种原因,当我打印结果 $intersection 时,我得到了:
Array ( )
谁能看到它出了什么问题?我的函数的代码在下面,但我认为上面应该足以解决它。
// For extra information
function findMutualInterests($_uProArray, $_tProArray)
$_commonDetails = null;
$_fieldNames = array_keys($_uProArray[0]);
$_uProValues = array_values($_uProArray[0]);
$_tProValues = array_values($_tProArray[0]);
//print_r($_uProValues);
// Iterate over the arrays and find ones in common
for ($i = 0; $i < count($_uProValues); $i++)
$t1 = explode(',',$_uProValues[$i]);
print_r($t1);
$t2 = explode(',',$_tProValues[$i]);
print_r($t2);
$intersection = array_intersect($t1,$t2);
print_r($intersection);
$_commonDetails[$_fieldNames[$i]] = implode($intersection);
return $_commonDetails;
编辑:只是想我会指出上面显示的 $t1 和 $t2 的输出是以下函数的单次迭代的输出。我只是选择了那个作为例子。
【问题讨论】:
你确定你最后没有多余的空格吗?在向数组中插入值之前,您是否尝试过使用trim()
?
嗨 netcoder - 我不会在任何时候手动将值插入到数组中。这些数组是 FQL 查询(Facebook 查询)的结果,所以我假设它们具有良好的形式。
var_dump($intersection)
的输出是什么? var_dump
显示所有变量的类型和长度。
嗨 Jocelyn - 该行的结果是:array(0) array(0) array(0) array(0) array(0) array( 0) 数组(0)
对不起,实际需要的是检查var_dump($t1);
和var_dump($t2);
的输出
【参考方案1】:
Your code works fine,尝试修剪输入字符串。
【讨论】:
【参考方案2】:您的代码有一个很大的错误。
如果$_tProValues
中的元素比$_uProValues
中的元素多,您将不会测试$_tProValues
数组中的所有可能性。那么你将无法测试所有的可能性。这里发生的事情就是这样,你没有测试所有的可能性。
【讨论】:
【参考方案3】:检查上面的 cmets,因为它工作得很好:
<?php
$a = array (
0 => 'Christina Aguilera',
1 => 'Iron Maiden',
2 => 'Bob Marley'
);
$b = array (
0 => 'Bob Marley'
);
$intersect = array_intersect( $a, $b );
print_r( $intersect );
?>
输出:
Array
(
[2] => Bob Marley
)
【讨论】:
【参考方案4】:**Check the code it is very useful for you ,because this works fine:**
$final_arr = [];
foreach ($a as $a_val)
foreach ($b as $b_val)
if(in_array(strtolower($a), array_map('strtolower', $b_val)))
$final_arr[] = $b_val;
【讨论】:
以上是关于php array_intersect 显示没有交集的主要内容,如果未能解决你的问题,请参考以下文章