2011-09-27 8 views
0

나는 120 ~ 오프셋을 가진 배열을 가지고 있으며 특정 문자열을 포함하는 특정 오프셋 후에 배열의 모든 값을 삭제하는 방법에 대해 궁금합니다. 예를 들어, Offset [68]에는 'Overflow'라는 문자열이 있습니다. 나는 68과 그 이상을 포함한 모든 것을 제거하고 어레이를 다시 만들고 싶다.특정 오프셋에서 모든 배열 값 삭제 및

슬라이스와 스플 라이스로 엉망으로 만들려고했지만 올바른 값을 반환하지 못했습니다. 나는 또한 'Overflow'을 포함하는 오프셋 번호를 잡은 다음 for 문을 통해 $i = count($array);까지 반복 할 생각이었습니다.하지만 그것은 약간 더 집중적 인 것 같습니다.

이것이 최선의 방법일까요? 아니면 내가 이것을 잘못 사용하는 몇 가지 기능이 있습니까?

+0

왜 ['array_slice'] (http://us.php.net/manual)가 아닌지? /en/function.array-slice.php) 당신을 위해 일하고 있습니까? –

답변

1

array_slice()을 사용하십시오.

$desired = array_slice($input, 0, $upTo); 
+0

오. array_slice가 정상적으로 작동했습니다. 나는 오프셋의 일부가 설정되지 않았다는 것을 알지 못했기 때문에 오프셋이 누락 되었기 때문에 배열에 문제가 발생했습니다. [0] [2] [6] 등. 이제는 제대로 작동합니다. 감사! –

0

먼저 배열에서 문자열 어커런스를 찾고 값이 발견되면 해당 지점에서 배열을 자릅니다.

function removeString($string, $array) 
{ 
    # search for '$string' in the array 
    $found = array_search($string, $array); 

    if ($found === false) return $array; # found nothing 

    # return sliced array 
    return array_slice($array, $found); 
} 

그리고 당신은 (실종 오프셋 (offset)로 인한 놀라움을 피하기 위해) 배열 순서를 만들 필요가 있다면, 당신은 항상 첫 번째 줄 $array = array_values($array)에 추가 할 수 있습니다. 0, 1, 2, 3, 4 ...