2015-01-30 2 views
0

다른 방법으로 문자열을 뒤 바꿀 수있는 함수를 찾고 있습니다. 문자열의 마지막 문자와 첫 번째 문자를 항상 가져와야합니다. 예에서 문자열다른 방법으로 문자열 역방향

123456 

는 PHP 함수가 있나요

615243 

이 될 것인가?

편집

이것은, 내가 당신을 위해 코드를 작성해야했다 지금까지 나 자신을 도울 수 없습니다

$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; 
    } 
} 
+1

아무 것도 시도해 보지 않았거나 코드를 작성해야합니까?! – Rizier123

+0

615243은 654321이어야한다고 생각합니까? 좀 더 명확히하십시오. – Shawn

+1

다른 방법으로 문자열을 뒤집을 수 있습니까? 당신의 결과는 되돌려지지 않고, 나는 그것이 무엇인지 알 수 없다. – Barmar

답변

3

내 코드 ...

이 그냥 문자열을 걸립니다 배열로 분할 한 다음 앞과 뒤에서 문자를 가져 와서 출력 문자열을 만듭니다.

$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

+0

나는 같은 생각을 가지고 있었다 :) https://eval.in/270019 –

1

이 당신을 위해 작동합니다 :

<?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; 

?> 

출력 : for 루프와 Scopey의 대답은 매우 다른

615243 
3

하지 :

$str = '123456'; 

$result = ''; 

$arr = str_split($str); 

for ($i=0; $arr; $i++) { 
    $result .= $i % 2 ? array_shift($arr) : array_pop($arr); 
} 

echo $result; 
관련 문제