2016-07-29 2 views
-1

WordPress에 구현할 수있는 스크립트를 작성하려고합니다. 이것의 목적은별로 중요하지 않습니다.문자열을 PHP의 여러 배열로 분리하려면 어떻게합니까?

내가 얻으려고하는 것은 스크립트가 URL을 감지하고 URL의 일부가 4 개의 다른 배열 중 하나의 문자열을 포함하는지 확인한 다음 올바른 파일을 포함시키는 것입니다.

내가 현재 가지고있는 것입니다 :

<?php 
    //Detect URL and remove slashes and ".php" 
    $url = $_SERVER["REQUEST_URI"]; 
    $find = array('/', '.php'); 
    $clear = array(' ', ' '); 

    //Arrays to detect from 
    $region1 = array('LosAngeles', 'SantaMonica', 'Hollywood'); 
    $region2 = array('Houston', 'Dallas'); 
    $region3 = array('Las Vegas', 'SaltLakeCity'); 

    //Assign a region 
    if (in_array($url, $region1)) { 
      $region = "California"; 
     } 
     elseif (in_array($url, $region2)) { 
      $region = "Texas"; 
     } 
     elseif (in_array($url, $region3)) { 
      $region = "Nevada"; 
     } 

    //Load file based on region 
    if ($region = "California";) { 
      include "file1.php"; 
     } 
     elseif ($region = "Texas") { 
      include "file2.php"; 
     } 
     elseif ($region = "Nevada") { 
      include "file3.php"; 
     } 
?> 

가 이미 foreach을 시도,하지만 당신이 1 개 이상 배열 루프를 실행하지 않습니다. 나는 또한 array_intersect을 해보려고하지 않고있다. URL이 적어도 하나의 배열과 일치하는지 확인하십시오.

여러분 모두의 도움에 감사드립니다!

감사합니다.

+0

코드로 어떤 작업을하지 않는지 설명 하시겠습니까? – alzee

+0

불완전한 코드로 대답하기는 어렵지만 각 루프에 대해 다차원 배열과 중첩을 제안합니다. – theHands

답변

1

귀하의 질문에 이미 foreacharray의 이름을 지정하고 올바른 방향을 가리키고 있습니다.

하지만 먼저 나는이 변수 이름을 지적하고 싶습니다

//Arrays to detect from 
$region1 = array(...); 
$region2 = array(...); 
$region3 = array(...); 

실제로 쉽게 다시 foreach와 다음 호환 변수가 당신이 그것을 사용할 수 있음을하게 배열로 표현 될 수있는이 세 가지 변수

:

$regions = [ 
    "California" => [ ... ], 
    "Texas" => [ ... ], 
    "Nevada" => [ ... ], 
]; 

foreach ($regions as $region => $cities) { 
    ... 
} 

이제 당신이 오직 필요로하는 파일 이름을하기 포함하는 지역의지도는 다음과 같습니다 배열을 반복 (이상 통과)

그럼 당신은 쉽게 foreach 내에서 매핑 할 수 있습니다 :

if (!isset($files[$region])) { 
    throw new UnexpectedValueException(sprintf("File for region %s missing", var_export($region, true)))); 
} 
$file = sprintf("%s.php", $files[$region]); 
include($file); 
return; 

이 미니 프로그램은 지역에 지정된 파일이 있는지 확인하고 다음이 포함됩니다. 그것은 if 절을 사용하지 않기 때문에 당신의 예제와 다르지만, 영역이 일치하면 반환됩니다. 그럼에도 불구하고, 일치하는 이유가 처음에는 예상됩니다.

foreach ($regions as $region => $cities) { 
    if (!in_array($url, $cities)) 
     continue; 
    } 
    if (!isset($files[$region])) { 
     throw new UnexpectedValueException(
      sprintf("File for region %s missing", var_export($region, true))); 
    } 
    $file = sprintf("%s.php", $files[$region]); 
    include($file); 
    return; 
} 
throw new UnexpectedValueException(
    sprintf("No region found for URL %s", var_export($url, true)) 
); 

테이크가는 요리 :

그래서 당신은 도시에 따라 지역과 일치 한 경우 찾을 루프 내에서이 작업을 연결할 필요가

  • 하지 마십시오 숫자 변수 -> 거의 언제나 이것은 배열을 대신 사용할 수있는 신호입니다.

  • 많은 경우 중 하나가있는 경우 루프 내에서 하나의 경우가 많습니다.

  • PHP의 배열은 해시 맵입니다. 존재하는 것이 있는지 (예 : 열쇠로) 물어볼 수 있습니다. 당신의 이익을 위해지도를 사용하십시오.

관련 문제