Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找位置字符串中字符串数组的第一个出现位置_Php_Arrays_String - Fatal编程技术网

Php 查找位置字符串中字符串数组的第一个出现位置

Php 查找位置字符串中字符串数组的第一个出现位置,php,arrays,string,Php,Arrays,String,PHP有一个函数strpos(),用于查找字符串中给定值的第一个实例的位置。有没有一种方法可以用一组字符串的针来实现这一点?它将首次出现: $str = '1st and 3rd'; str_array_pos($str, array('st', 'nd', 'rd', 'th')) //would return 1 because of 'st' 要做到这一点,请使用==false进行测试。您可以自己编写一个: function str_array_pos($string, $array)

PHP有一个函数
strpos()
,用于查找字符串中给定值的第一个实例的位置。有没有一种方法可以用一组字符串的针来实现这一点?它将首次出现:

$str = '1st and 3rd';

str_array_pos($str, array('st', 'nd', 'rd', 'th')) //would return 1 because of 'st'

要做到这一点,请使用
==false
进行测试。您可以自己编写一个:

function str_array_pos($string, $array) {
  for ($i = 0, $n = count($array); $i < $n; $i++)
    if (($pos = strpos($string, $array[$i])) !== false)
      return $pos;
  return false;
}
函数str\u array\u pos($string,$array){
对于($i=0,$n=count($array);$i<$n;$i++)
if(($pos=strpos($string,$array[$i]))!==false)
返回$pos;
返回false;
}

顺便说一下,示例中的返回值应该是0,而不是1,因为数组索引从0开始。

您可以
foreach
在针数组上执行
strpos()
并将结果保存在数组中。您正在查找所有结果的
min()
。仔细想想,我认为这不适合您的情况@卡萨布兰卡-当你评论时注意到,你的方法绝对正确,有a+1。这并不总是返回任何针串第一次出现的位置。我同意斯文斯的观点,如果正确的一个之前的另一个数组元素也出现在字符串中,这仍然是不正确的。例如:str_array_pos('123',array('3','2','1')返回2而不是0,这是应该的。