2013-06-19 42 views
0

我想从输入中删除给定位置的字符串中的单词,以及输入中的下一个单词与位置。从字符串中删除单词的位置php

例:

position = 2 

串= aa bb cc dd ee ff gg hh

将变为:aa cc ee gg

我:

$delete = $position - 1; 
$words = explode(" ", $string); 
if(isset($words[$delete])) unset($words[$delete]); 
$string = implode(" ", $words); 
echo $string;} 

显示

aa cc dd ee ff gg hh 
+3

你的问题是danr?代码似乎工作正常 – WooDzu

+0

我想他想删除删除后的每个第二个元素。该示例删除了更多然后只是bb,它也删除了dd和ff和hh。 – Michael

+0

是的,这是正确的迈克尔 – Corey

回答

0
$position = 2; 

$string = 'aa bb cc dd ee ff gg hh'; 

$arr=explode(' ', $string); 
$final_str=''; 

for($i=0;$i<count($arr);$i++) { 

    if($i%$position==0) { 
    $final_str.=$arr[$i].' '; 
    } 

} 

echo $final_str; 
+0

你测试了吗?它不会调整$位置为基于1而不是基于0的位置。 – Barmar

1

这是未经测试,但我认为这是你在找什么。 这将删除删除后或开始计算单词时的每个第二个单词。

$deletePos = 2; 
$words = explode(" ", $string); 

$i = 1; 
foreach($words as $key => $word) { 
    if ($i == $deletePos) { 
    unset($words[$key]); 
    $i = 1; 
    continue; 
    } 
    $i++; 
} 
1
$position = 2; 
$string = 'aa bb cc dd ee ff gg hh'; 
$arr=explode(' ', $string); 
$count = count($arr); 
// $position-1 because PHP arrays are 0-based, but the $position is 1-based. 
for ($i = $position-1; $i < $count; $i += $position) { 
    unset($arr[$i]); 
} 
$new_string = implode(' ', $arr); 
echo $new_string; 
相关问题