配列
$arr=array('A','M','N');
文字列は変数ですが、M と N は文字列内に 1 回しか出現できません。複数回出現した場合は 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 Returns 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');$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>';
$str = '<li><a href="(url)" title="(title)" >(title)<img src=(img) /></a></li>';
$str = 'AMN';
foreach($arr as $v){
if( substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v)
}
}
var_dump($data)
$str = 'AMN';
foreach($arr as $v){
if(substr_count($str,$v) = = 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data)
$str = 'AMTN' の場合、エラーが発生します
$arr = array('A','M','N');
$str = 'AMN';
foreach($arr as $v){
if(substr_count() $ str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data); $str = ' の場合、エラーが発生します。 AMTN' ラ
何も問題ありません
array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int;
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v)
}
}
var_dump($data); str = 'AMTN'、エラーになります
エラーはありません
array(3) { ["A"]=> int(0) ["M"]=> int(1) [" N"]= > int(3) }
M は 2 回目の出現で、結果は 1、N は 3 回目の出現で、2 になるはずです。
スターズ コンサートには 3 人の大きな歌手とたくさんの小さな歌手が出演しました。
大物歌手は、アンディ・ラウ、ジャッキー・チャン、JJ Lin です
結果
array(3) { ["A"]=> int(1) ["M"]=> 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);