【问题标题】:all same value in arrays php数组php中的所有相同值
【发布时间】:2018-01-16 06:52:35
【问题描述】:

我想回显变量$total 当array1 中的所有值都等于array2 如果array1 任何一个值在array2 中不匹配则不显示$total 等于3 如果全部相等则显示3。

有什么办法吗?

代码:

$array1 = array( "green", "red", "blue");
$array2 = array( "green", "yellow", "red");
$total = 0;
foreach ($array1 as $txt1 => $val1) {
    foreach ($array2 as $txt2 => $val2) {
        if ($val1 == $val2) {
            $total = 3;
        }
    }
}
echo $total;

【问题讨论】:

  • 只使用比较运算符,不需要循环:3v4l.org/BYhUk
  • 比较运算符不起作用,我想通过循环,因为我的数组有时像数组(“green=>2”,“red=>4”,“blue”);
  • 我想将一个数组的所有值匹配到另一个数组
  • 请添加更多示例。
  • 我希望当 array1 中的所有值都匹配到 array2 时,如果有人不匹配,则计算总数不计数,然后简单地回显 0

标签: php arrays


【解决方案1】:

我认为您正在寻找的是 PHP 内置的数组函数,用于区分 twi 数组。

array_diff($a1,$a2);

我认为这将帮助您解决此函数返回数组值的问题,如果它返回空数组,则表示两个数组相同。 你可以在这里看到简要使用 array_diff()

$array1 = array( "green", "red", "blue");
$array2 = array( "green", "yellow", "red");
$total = 0;
$result=array_diff($array1,$array2);
if(empty($result))
  $total = 3;
echo $total;

【讨论】:

    【解决方案2】:

    @scaisEdge 代码假定您将元素 0 与元素 0 匹配,元素 1 与元素 1 匹配,等等。

    以下代码示例将检查值是否存在于另一个数组中任何地方

    $array1 = array("green", "yellow", "blue");
    $array2 = array("green", "red", "blue");
    
    $total = 0;
    foreach ($array1 as $a1) {
        foreach ($array2 as $a2) {
            if ($a1 == $a2) {
                $total++;
            }
        }
    }
    echo $total;
    

    编辑以下评论:

    $total = 0;
    if ($array1 == $array2) {
        $total = count($array1);
    }
    echo $total
    

    如果数组相同,上面的代码将回显数组中元素的数量,否则将回显0。


    Edit2:以上是错误的。

    用以下行替换我原始答案中的最终回声语句。 (最初的答案是顶部的那个,有两个 foreach 循环)。

    echo $total == count($array1) ? 3 : 0;
    

    这将检查有多少元素是相同的,如果它与$array1中的元素数量相同,则打印3,否则打印0。这是ternary operator

    【讨论】:

    • 我希望当 array1 中的所有值都匹配到 array2 时,如果有人不匹配,则计算总数不计数,然后简单地回显 0
    • friend 它不正确,我希望我想要当 array1 中的所有值都匹配到 array2 然后在我的代码中 echo 3 简单但如果不匹配任何例如 array1 有黄色值并且在 array2 中没有黄色值所以它不匹配并且不回显 3 如果两侧的值相同,则仅回显 0 然后仅回显 3 ...我清除了问题,请提供任何帮助
    • @opangmario 抱歉,我的印象是数字 3 来自元素的数量。只需将count($array1) 替换为3...?
    • 我不计算任何东西只是检查array1和array2中的所有值相同然后回显3否则回显0。我的数组有时不同所以我只匹配双方的值有时有键和值对但我只想要匹配值。
    • 我替换但是当两个数组具有相同的值时不回显 3
    【解决方案3】:

    您的问题尚不清楚,但希望您可以使用单个 foreach 并计算匹配的行 然后回显结果总数或测试最终结果以获取更多信息..

      $array1 = array( "green", "red", "blue");
      $array2 = array( "green", "yellow", "red");
      $total = 0;
      foreach ($array1 as $key => $val1) {
        if ($val1 == $array2[$key]){
          $total++;
        }
    
      }
    
      if ($total !=3) {
         echo 0;
      } else {
         echo $total;
      }
    

    【讨论】:

    • 我希望当 array1 中的所有值都匹配到 array2 时,如果有人不匹配,则计算总数不计数,然后简单地回显 0
    • 简单的echo count(array_intersect($array1, $array2)); 也会这样做。
    • @LawrenceCherone 正确..您应该发布正确的答案..是一个很好的答案..
    【解决方案4】:

    当我阅读您的对话时,您只想检查所有内容是否匹配,如果不匹配 返回 0 然后试试这个:

    $array1 = array( "green", "red", "blue");
      $array2 = array( "green", "yellow", "red");
      $total = 3;
      foreach ($array1 as $key => $val) {
       if (!in_array($val, $array2)){
          $total = 0;
        }
    
    }
    
    echo $total;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-30
      • 2015-01-04
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 2018-04-30
      相关资源
      最近更新 更多