当前位置: 代码迷 >> PHP >> 判断数组值在字符串中出现的顺序
  详细解决方案

判断数组值在字符串中出现的顺序

热度:63   发布时间:2016-04-28 17:45:03.0
求一个判断数组值在字符串中出现的顺序
数组
$arr=array('A','M','N');
字符串不定,但是M和N在字符串中只能出现一次,如果出现多次则返回false
符合要求则返回数组$data['M'],$data['N']
比如:
A MAN  返回 2,4   //M为数组中第2个出现,N为数组中第4个出现 (A出现在1和3)
A BOY 返回 false //不含M或者N
MAN 返回1,3   //M为数组中第1个出现,N为数组中第3个出现 (A出现在2)
A ATM IN 返回 3,5   //M为数组中第3个出现,N为数组中第4个出现 (A出现在1和2)

------解决思路----------------------
本来一个简单的问题,被你已解释变得复杂了
开看这段代码的结果就知道该怎么做了
$arr = array('A','M','N');

$data = array(
  'A MAN',
  'A BOY',
  'MAN',
  'A ATM IN'
);

foreach($data as $text) {
  $t = str_split($text);
  $r[] = array_intersect($t, $arr);
}
print_r($r);
Array
(
    [0] => Array
        (
            [0] => A
            [2] => M
            [3] => A
            [4] => N
        )

    [1] => Array
        (
            [0] => A
        )

    [2] => Array
        (
            [0] => M
            [1] => A
            [2] => N
        )

    [3] => Array
        (
            [0] => A
            [2] => A
            [4] => M
            [7] => N
        )

)


------解决思路----------------------
$arr = array('A','M','N');
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
  相关解决方案