使用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
标签
。您应该修剪它们,或者修复
分解的
代码,这样它就不会留下换行符。