2012-11-12 2 views
0

과 사람 항목을 대체하는 두 개의 배열 내가 두 배열이 pre_gmatch에서 가져온가 있다고 할 수 있습니다. 그래서 여기에 무슨 일이 일어나고 있는지 얻을 수있는 코드가, 한 반복적 인 단어 (이 단어는이 경우 입니다) 첫 번째 배열의 모든 항목에 있습니다 : foreach는 다른

foreach ($names as $key => $name) { 
    $i++; 
$nameclean = str_replace ("number", $numbers[$key], $names[$key]); 
echo $nameclean; 
} 

가 어떻게 첫 번째 배열을 foreach는하는, 결과에서 첫 번째 배열의 필요한 단어를 배열 2의 필요한 항목으로 바꿉니다. 예 : 단어 배열의 첫 번째 항목에있는 숫자은 배열의 첫 번째 항목으로 대체해야합니다. $ numbers

+0

$ mystring, $ names 및 $ numbers는 무엇입니까? 당신이하려는 것을 시각화하는 것은 어렵습니다. – Stegrex

+0

$ mystring은 웹 사이트 콘텐츠입니다. 컬 (curl) 함수를 통해 얻고 있습니다. 그 문자열은 항상 가변적입니다. 한 가지 공통적 인 사항은 첫 번째 문자열 ($ names)의 모든 항목에는 동일한 단어가 들어 있으며, 첫 번째와 두 번째 문자열 항목 수는 모두입니다. 같은. – DadaB

+0

'preg_match_all()'은 일치를 다차원 배열로 설정하므로'$ names [$ key]'와'$ numbers [$ key]'는 여전히 배열이므로'str_replace'는 실패합니다. 또한 일반적인 권장 사항은 "HTML 컨텐트를 해석하는 데 정규 표현을 사용하지 마십시오"입니다. – Passerby

답변

1

조금 단순화합시다 방정식에서 preg_match를 가져옵니다. 두 개의 개별 배열로 시작합니다.

$numbers = array(
    "I like having number eyes.", 
    "there are number days in a week,", 
    "A car normally has number wheels.", 
); 

$names = array("two", "seven", "four"); 

foreach 문을 사용하여 질문에 대답, 당신은이 그러나 for 루프에서 더 잘 작동 것

$i = 0; 
foreach ($numbers as $number) { 
    $numbers[$i] = str_replace ("number", $names[$i], $number); 
    $i++; 
} 

다음 대신

for ($i = 0; $i < count($numbers); $i++) { 
    $numbers[$i] = str_replace ("number", $names[$i], $numbers[$i]); 
} 

이 두 가지의 결과가 할 수있는

Array 
(
    [0] => I like having two eyes. 
    [1] => there are seven days in a week, 
    [2] => A car normally has four wheels. 
) 
0

어쩌면 먼저 array_replace() 첫 번째 배열의 값을 두 번째 배열의 값으로 바꾸려면 먼저 호출하면됩니다.

희망이 도움이됩니다.