【问题标题】:How use an array of letters as a filter for foreach loop in Php如何使用字母数组作为 PHP 中 foreach 循环的过滤器
【发布时间】:2020-10-17 22:48:25
【问题描述】:

我正在尝试遍历一个数组,同时使用另一个数组作为一种“过滤器”:

$aa = ["b","r","i", "g", "i", "t", "t", "e"];
$bb = ["a", "e", "i", "o", "u", "r"];

foreach($aa as $b){
  if($b == $bb){
    echo "Give me an ". $b;
    echo "\n";
  }else{
    echo "Give me a ". $b;
    echo "\n";

  }
}

所以我希望它比较 $aa 中的字母与 $bb 中的字母列表,以确定它是否应该回显“an”或“a”在语法上是正确的。 我能够让它正常工作的唯一方法是这样做:

foreach($aa as $b){
  if($b == "a" or $b == "e" or $b == "i" or $b == "o" or $b == "u" or $b == "r"){
    echo "Give me an ". $b;
    echo "\n";
  }else{
    echo "Give me a ". $b;
    echo "\n";

  }
}

【问题讨论】:

标签: php arrays foreach


【解决方案1】:

你应该使用in_array这里是official documentation in php.net

我会这样做:

foreach($aa as $b){
   if(in_array($b, $bb)){
      echo "Give me an ". $b;
      echo "\n";
   }else{
      echo "Give me a ". $b;
      echo "\n";

   }
 }

【讨论】:

  • 或者进一步减少:foreach($aa as $a) printf("Give me a%s %s\n", in_array($a, $bb) ? 'n' : '', $a);
【解决方案2】:

试试这个:)

<?php

$aa = ["b","r","i", "g", "i", "t", "t", "e"];
$bb = ["a", "e", "i", "o", "u", "r"];

foreach($aa as $b){
    if(in_array($b, $bb)){
        echo "Give me an ". $b . "<br/>";
        echo "\n";
    }else{
        echo "Give me a ". $b . "<br/>";
        echo "\n";

    }
}

exit(0);

输出:

Give me a b
Give me an r
Give me an i
Give me a g
Give me an i
Give me a t
Give me a t
Give me an e

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多