求一个判断数组值在字符串中出现的顺序 数组顺序 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本来一个简单的问题,被你已解释变得复杂了开看这段代码的结果就知道该怎么做了$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('(title)','(url)','(img)');$str = '<li><a href="(url)" title="(title)" ><img src=(img) /></a></li>';我现在要得到的是 (title是第2个出现),url是第1个出现 img是第3个出现。而下面的字符串$str = '<li><a href="(url)" title="(title)" >(title)<img src=(img) /></a></li>';我现在要得到的是 (title是第2,3个出现),url是第1个出现 img是第4个出现。 $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); 如果$str = 'AMTN'就会出错啦 如果$str = 'AMTN'就会出错啦没出错啊array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) } 如果$str = 'AMTN'就会出错啦没出错啊array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) }M是第二出场,结果1,N是第3个出场,应该是2才对。 群星演唱会来了三个大歌手和一堆小歌星。大歌星分别是:刘德华,张学友,林俊杰举办方安排了出场顺序,林俊杰年轻点多唱了几首,其他两个没精力只唱了一首。张学友,XXX,XXX,林俊杰,XXX,林俊杰,XXX,XXX,刘德华,XXX,林俊杰XXX我现在需要排的是 他们三人的出场顺序结果应该是林俊杰 2,3,5张学友1刘德华4不知道这样解释清楚了没有。 $arr = array('A','M','N');$str = 'AMTN';$data = array();foreach($arr as $v){ if(substr_count($str,$v) == 1){ $data[$v] = strpos($str,$v)+1; }}var_dump($data);结果array(3) { ["A"]=> int(1) ["M"]=> int(2) ["N"]=> int(4) } 我要的结果N是3只统计 AMN的顺序 倒是你个了我思路,我把数组键和值反转一下,看能不能得到结果。 搞定了,用正则匹配出的。唉!~$arr = array('(title)','(url)','(img)'); $str = '<li><a href="(url)" title="(title)" ><img src=(img) />(title)</a></li>'; preg_match_all('/(\(title\)|\(url\)|\(img\))/i',$str,$data); print_r($data); 菜虫因各种需要,在线求助!! php session 问题 怎样远程连接phpmyadmin? LAMP中的L一般装什么操作系统? 初学者的一个小问题??? PHP 读文本文件的问题 关于空格和实码转换 自增长的 id 大家是怎么设的? 网页上如何放菜单? PHP求助贴! 这样写为啥不对哟 iis rewrite伪静态规则怎么匹配单个网址
开看这段代码的结果就知道该怎么做了$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('(title)','(url)','(img)');
$str = '<li><a href="(url)" title="(title)" ><img src=(img) /></a></li>';我现在要得到的是 (title是第2个出现),url是第1个出现 img是第3个出现。
而下面的字符串$str = '<li><a href="(url)" title="(title)" >(title)<img src=(img) /></a></li>';我现在要得到的是 (title是第2,3个出现),url是第1个出现 img是第4个出现。
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) }
array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) }
M是第二出场,结果1,N是第3个出场,应该是2才对。
大歌星分别是:刘德华,张学友,林俊杰
举办方安排了出场顺序,林俊杰年轻点多唱了几首,其他两个没精力只唱了一首。
张学友,XXX,XXX,林俊杰,XXX,林俊杰,XXX,XXX,刘德华,XXX,林俊杰XXX
我现在需要排的是 他们三人的出场顺序
结果应该是林俊杰 2,3,5
张学友1
刘德华4
不知道这样解释清楚了没有。
$arr = array('A','M','N');
$str = 'AMTN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v)+1;
}
}
var_dump($data);
结果array(3) { ["A"]=> int(1) ["M"]=> int(2) ["N"]=> int(4) }
只统计 AMN的顺序 倒是你个了我思路,我把数组键和值反转一下,看能不能得到结果。
$str = '<li><a href="(url)" title="(title)" ><img src=(img) />(title)</a></li>';
preg_match_all('/(\(title\)|\(url\)|\(img\))/i',$str,$data);
print_r($data);