已知一个数组如下所示:
<?php
$in = array(
0 => '一',
1 => '一二',
2 => '一二八九',
3 => '一二阿拉斯加',
4 => '五',
5 => '五六',
6 => '五六七',
7 => '五六七八',
8 => '大家',
9 => '大家好',
10 => '坦克',
11 => '他',
12 => '它',
);
?>要求输出显示结果如下所示:
$out = array(
'一' => array(0,3);
'一二' => array(1,3);
'一二八九' => array(2,2);
'一二阿拉斯加' => array(3,3);
'五' => array(4,7);
'五六' => array(5,7);
'五六七' => array(6,7);
'五六七八' => array(7,7);
'大家' => array(8,9);
'大家好' => array(9,9);
'坦克' => array(10,10);
'他' => array(11,11);
'它' => array(12,12);
);
这是面试官给我的一道题,虽然有要求让我自己做,然后发给他答案,可我想了半天,解决不了。就请各位大侠帮帮我啊。
交答案的时间已经过了。小妹没解决了这道题,心里总想着不舒服,所以来求大侠们帮助!!
<?php
$in = array(
0 => '一',
1 => '一二',
2 => '一二八九',
3 => '一二阿拉斯加',
4 => '五',
5 => '五六',
6 => '五六七',
7 => '五六七八',
8 => '大家',
9 => '大家好',
10 => '坦克',
11 => '他',
12 => '它',
);
?>要求输出显示结果如下所示:
$out = array(
'一' => array(0,3);
'一二' => array(1,3);
'一二八九' => array(2,2);
'一二阿拉斯加' => array(3,3);
'五' => array(4,7);
'五六' => array(5,7);
'五六七' => array(6,7);
'五六七八' => array(7,7);
'大家' => array(8,9);
'大家好' => array(9,9);
'坦克' => array(10,10);
'他' => array(11,11);
'它' => array(12,12);
);
这是面试官给我的一道题,虽然有要求让我自己做,然后发给他答案,可我想了半天,解决不了。就请各位大侠帮帮我啊。
交答案的时间已经过了。小妹没解决了这道题,心里总想着不舒服,所以来求大侠们帮助!!
$out輸出的值為$in中數組的結果值所在的下標範圍比如:'一' 存在於$in數組的0~3的下標中
{
$seavalue=$value;
$bpos='';
$epos='';
$i=0;
foreach ($in as $key1 => $value1)
{
if (strripos($value1, $seavalue))
{
if($bpos=='')
$bpos=$i;
else
$epos=$i;
}
$i++;
}
if ($epos=='')
$epos=$bpos;
$out[$value]=array($epos,$bpos);
}未經測試
$in = array(
0 =>'一',
1 =>'一二',
2 =>'一二八九',
3 =>'一二阿拉斯加',
4 =>'五',
5 =>'五六',
6 =>'五六七',
7 =>'五六七八',
8 =>'大家',
9 =>'大家好',
10 =>'坦克',
11 =>'他',
12 =>'它'
);
$output=array();
foreach($in as $value)
{
$output[$value]=array();
foreach($in as $key=>$value1)
{
if(strpos($value1,$value)===0)
{
if(count($output[$value])==0)
array_push($output[$value],$key);
else
array_pop($output[$value]);
array_push($output[$value],$key);
}
}
}
echo "<pre>";
print_r($output);
echo "</pre>";测试OK
我也写了一段,LZ参考参考吧。测试OK<?php$in = array(
0 => '一',
1 => '一二',
2 => '一二八九',
3 => '一二阿拉斯加',
4 => '五',
5 => '五六',
6 => '五六七',
7 => '五六七八',
8 => '大家',
9 => '大家好',
10 => '坦克',
11 => '他',
12 => '它',
);$out = array();
$end = 0;
$length = count($in);
for ($i=0; $i<$length; $i++){
for ($p=0; $p<$length; $p++){
if(strstr($in[$p], $in[$i])){
$out[$in[$i]] = array($i,$p);
}
}
}print_r($out);?>
0 => '一',
1 => '一二',
2 => '一二八九',
3 => '一二阿拉斯加',
4 => '五',
5 => '五六',
6 => '五六七',
7 => '五六七八',
8 => '大家',
9 => '大家好',
10 => '坦克',
11 => '他',
12 => '它',
);
foreach($in as $k=>$v)
{
$n[$v] = array($k,$k);
$i = $k;
while($i--)
{
if(strpos($v,$in[$i]) !== false)
$n[$in[$i]][1]+=1;
}
}
echo "<pre/>";
print_r($n);
0 => '一',
1 => '一二',
2 => '一二八九',
3 => '一二阿拉斯加',
4 => '五',
5 => '五六',
6 => '五六七',
7 => '五六七八',
8 => '大家',
9 => '大家好',
10 => '坦克',
11 => '他',
12 => '它',
);
foreach($in as $k=>$v)
{
$ak = array_keys(preg_grep("/$v/i",$in));
$n[$v] = array(min($ak),max($ak));
}
echo "<pre/>";
print_r($n);