我有一个如下数组:
$fruits = array("apple","orange","papaya","grape")
我有一个如下变量:
$content = "apple";
我需要过滤一些条件,如:如果此变量与至少一个数组元素匹配,则执行某些操作.变量$content是一堆随机字符,实际上是数组数据中可用的一个,如下所示:
$content = "eaplp"; // it's a dynamically random char from the actual word "apple`
我做了什么就像下面这样:
$countcontent = count($content); for($a=0;$a==count($fruits);$a++){ $countarr = count($fruits[$a]); if($content == $fruits[$a] && $countcontent == $countarr){ echo "we got".$fruits[$a]; } }
我试着计算这些短语有多少个字母,如果……其他……当字符串中的总字符与一个数组数据中的总字符匹配时,但是除此之外我还能做些什么吗?
我们可以使用in_array检查数组是否包含某个值.所以你可以检查你的$fruits数组是否包含字符串“apple”,
in_array("apple",$fruits)
返回一个布尔值.
如果字母的顺序是随机的,我们可以使用此函数按字母顺序对字符串进行排序:
function sorted($s) { $a = str_split($s); sort($a); return implode($a); }
然后将此函数映射到您的数组并检查它是否包含已排序的字符串.
$fruits = array("apple","grape"); $content = "eaplp"; $inarr = in_array(sorted($content),array_map("sorted",$fruits)); var_dump($inarr); //bool(true)
另一个选择是array_search.使用array_search的好处是它返回项的位置(如果它在数组中找到,否则为false).
$pos = array_search(sorted($content),$fruits)); echo ($pos !== false) ? "$fruits[$pos] found." : "not found."; //apple found.