2016-06-05 3 views
0

모든 값이 장소 이름으로 시작되는 배열이 있습니다. 일부 공연장에는 내가 제거하고자하는 "The"가 있습니다. 따라서 sort() 배열을 사용하면 "T"의 모든 "The ..."공연장으로 끝나지 않습니다."The"배열 값을 알파벳순으로 정렬

function remove_The($array) { 
    global $all_venue_listings; 
    // remove the "The" from the listings... 
    foreach($all_venue_listings as $v) { 
     if (substr($v, 0, 4) === "The " || substr($v, 0, 4) === "the " || substr($v, 0, 4) === "THE ") { 
      $v = preg_replace("/The /i","",$v); 
     } 
    } 
    return $all_venue_listings; 
} 

그러나 다시 배열로 변경된 값을 넣어하지 않는 것 :

나는이 썼다. foreach 루프의 배열을 어떻게 조작 할 수 있습니까? 그래서 내가 바꾼 배열이 원래 배열로 되돌아갑니다.

나는이 함께 preg_replace 라인을 교체 시도 :

$all_venue_listings[] = preg_replace("/The /i","",$v); 

을하지만 그것은 단지 (이하 ""하나없이 하나) 배열의 중복 항목을 만듭니다.

답변

3

두 가지 옵션이 있습니다.

1) 기준을 사용하여 직접 소자를 업데이트합니다 (&)주의 :

foreach($all_venue_listings as $key => $v) { 
... 
$all_venue_listings[$key] = ... 

하나가 작동 :

foreach($all_venue_listings as &$v) { 
... 
$v = ... 

2) 원래의 어레이의 키를 사용하여 업데이트. 내가 선호하는 # 1