假设我有一个字符串变量:
$str = "abcdefghijklmn";
在 PHP 中编写函数以从字符串的 end 开始并返回其他所有字符的最佳方法是什么?示例的输出应为:
nljhfdb
这是我到目前为止所做的:
$str = "abcdefghijklmn";
$pieces = str_split(strrev($str), 1);
$return = null;
for($i = 0; $i < sizeof($pieces); $i++) {
if($i % 2 === 0) {
$return .= $pieces[$i];
}
}
echo $return;
答案 0 :(得分:7)
试试:
$input = 'abcdefghijklmn';
$output = '';
for ($i = strlen($input) - 1; $i >= 0; $i -= 2) {
$output .= $input[$i];
}
输出:
string 'nljhfdb' (length=7)
答案 1 :(得分:1)
您需要使用str_split
拆分字符串以将其存储在数组中。现在循环遍历数组并比较键以执行modulo
操作。
<?php
$str = "abcdefghijklmn";
$nstr="";
foreach(str_split(strrev($str)) as $k=>$v)
{
if($k%2==0){
$nstr.= $v;
}
}
echo $nstr; //"prints" nljhfdb
答案 2 :(得分:1)
我会像Shankar一样,尽管这是循环的另一种方法。
<?php
$str = "abcdefghijklmn";
for($i=0;$i<strlen($str);$i++){
$res .= (($i-1) % 2 == 0 ? $str[$i] : "");
}
print(strrev($res)); // Result: nljhfdb
?>
答案 3 :(得分:1)
反转字符串然后执行类似
的操作foreach($array as $key => $value)
{
if($key%2 != 0) //The key is uneven, skip
continue;
//do your stuff
}
答案 4 :(得分:0)
preg_replace('/(.)./', '$1', strrev($str));
其中preg_replace用两个中的第一个替换反向字符串的每两个字符。
答案 5 :(得分:0)
循环前进,后退追加
<?php
$res = '';
$str = "abcdefghijklmn";
for ($i = 0; $i < strlen($str); $i++) {
if(($i - 1) % 2 == 0)
$res = $str[$i] . $res;
}
echo $res;
?>
答案 6 :(得分:-1)
这样的事情怎么样:
$str = str_split("abcdefghijklmn");
echo join("",
array_reverse(
array_filter($str, function($var) {
global $str;
return(array_search($var,$str) & 1);
}
)
)
);