Я ищу функцию, которая может изменить строку по-другому. он всегда должен принимать последний и первый символ строки. В примере строка
123456
должен стать
615243
Есть ли какая-либо функция php?
РЕДАКТИРОВАТЬ
Это мой код до сих пор
$mystring = "1234";
$start = 0;
$end = strlen($mystring);
$direction = 1;
$new_str = '';
while ($start === $end) {
if ($direction == 0) {
$new_str .= substr($mystring, $start, 1);
$start++;
$direction = 1;
} else {
$new_str .= substr($mystring, $end, -1);
$end--;
$direction = 0;
}
}
Я не мог с собой поделать, мне просто пришлось написать свой код для вас...
Это просто берет вашу строку, разбивает ее на массив, а затем создает вашу выходную строку с буквами спереди и сзади.
$output = '';
$input = str_split('123456');
$length = count($input);
while(strlen($output) < $length) {
$currLength = strlen($output);
if($currLength % 2 === 1) {
$output .= array_shift($input);
}
else {
$output .= array_pop($input);
}
}
echo $output;
Пример: http://ideone.com/Xyd0z6
Не очень отличается от ответа Скопей на цикл for:
$str = '123456';
$result = '';
$arr = str_split($str);
for ($i=0; $arr; $i++) {
$result .= $i % 2 ? array_shift($arr) : array_pop($arr);
}
echo $result;
Это должно сработать для вас:
<?php
$str = "123456";
$rev = "";
$first = substr($str, 0, strlen($str)/2);
$last = strrev(substr($str, strlen($str)/2));
$max = strlen($first) > strlen($last) ? strlen($first): strlen($last);
for($count = 0; $count < $max; $count++)
$rev .= (isset($last[$count])?$last[$count]:"" ) . (isset($first[$count])?$first[$count]: "");
echo $rev;
?>
Вывод:
615243