使用foreach PHP比较两个数组的数据
我目前正试图比较两个数组的数据。我的代码与下面的代码类似:使用foreach PHP比较两个数组的数据,php,arrays,foreach,comparison,Php,Arrays,Foreach,Comparison,我目前正试图比较两个数组的数据。我的代码与下面的代码类似: foreach ($arrayOne as $one) { $variable = $one['one']; foreach ($arrayTwo as $two) { if ($two == $variable) { echo "Match!"; } } } 但是,它只与$arrayTwo中的第一个元素进行比较,而不是在所有$arrayTwo中循环。为
foreach ($arrayOne as $one) {
$variable = $one['one'];
foreach ($arrayTwo as $two) {
if ($two == $variable) {
echo "Match!";
}
}
}
但是,它只与$arrayTwo
中的第一个元素进行比较,而不是在所有$arrayTwo
中循环。为什么会这样?此外,有没有更有效的方法来完成我想做的事情
数组1的片段:
array (
0 =>
array (
'paper_item_id' => 1,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Blue',
'prompt' => 'Blue',
'layer' => 1500,
),
1 =>
array (
'paper_item_id' => 2,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Green',
'prompt' => 'Green',
'layer' => 1500,
),
2 =>
array (
'paper_item_id' => 3,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Pink',
'prompt' => 'Pink',
'layer' => 1500,
),
3 =>
array (
'paper_item_id' => 4,
'type' => 1,
'cost' => 20,
'is_member' => false,
'label' => 'Black',
'prompt' => 'Black',
'layer' => 1500,
),
)
数组2的片段:
array (
0 => 'Blue',
1 => '
Purple Bat Wings',
2 => '
Black Motorbike',
3 => '
Test Scarf',
4 => '
Black',
5 => '
Green',
6 => '
Referee Jersey',
7 => '
Stethoscope',
8 => '
Custom Hoodie',
9 => '
',
)
函数返回两个(或更多)数组中不同的值。如果返回值为空,则它们根本没有区别。更有效的方法是从
$arrayOne
值生成关联数组:
$check = array();
foreach ($arrayOne as $one) {
$check[$one['one']] = true;
}
foreach ($arrayTwo as $two) {
if (isset($check[$two])) {
echo 'Match! <br/>';
}
}
$check=array();
foreach($arrayOne作为$1){
$check[$one['one']]=true;
}
foreach($arrayTwo作为$two){
如果(设置($check[$two])){
回音“匹配!
”;
}
}
原始代码中的实际问题是,
explode()
代码返回一个数组,$arrayTwo
中的每个元素都以换行符开头,第一个除外。但是$arrayOne
中的相应值没有换行符,因此它们不匹配。您需要修复问题中未显示的explode()
代码。它不应该类似于$var2=$two['two'],然后与if语句中的$variable进行比较。请出示您的完整代码。ThanksIt对我有用:它为$arrayTwo
@AliGajani中的第一个和第三个元素打印Match
。代码将$arrayTwo的所有元素与$arrayOne中的所有“一”元素进行比较$arrayOne是json_decode()
的结果,$arrayTwo是正常的explode()
的结果。这些函数都不能与这些数组一起使用,因为他将$arrayTwo
的顶级元素与$arrayOne
中的2级值进行比较。谢谢!然而,这仍然给了我同样的结果。它在第一次匹配后停止,尽管还有很多;var_出口(arrayTwo美元)代码>到你的问题。可能问题在于数组没有按您期望的方式进行布局。在$arrayOne
中没有one
键。很抱歉,one
只是用作测试,在我的实际代码中,one
是标签
。您应该修剪它们,或者修复分解的代码,这样它就不会留下换行符。