2012-07-03 4 views
0

코드는 다음과 같습니다() &는 에코을 TRUE 반환해야하면 어떻게 내가 필요로하는 것은, 그것을 위해 $ I = 0 $ I = 4

<?php 
$notes = array("Main/folder/02/12.jpg = twelve", 
       "Main/folder/02/16.jpg = sixteen" 
       ); 
$imglist = array("12.jpg", 
        "13.jpg", 
        "14.jpg", 
        "15.jpg", 
        "16.jpg" 
       ); 
for ($i=0;$i<(count($imglist));$i++){ 
    if(in_array($imglist[$i], $notes)){ 
     echo $imglist[$i]; 
     //Get key($notes) and //Cant figure out how to implement this key(); 
     echo $notes[$key]; 
    } //if ENDS 
} //for ENDS 
?> 

.

의사 코드/로직이다

  • 대하여 반복 하나 전부는 $ imglist 배열을 통해 하나.
  • 완전한 $ imglist [$ i] 문자열이 $ notes 배열에있는 경우 $ notes에 해당 값의 키/색인을 가져오고 $ notes [$ key]와 $ imglist [$ i]를 echo합니다. 또는 에코 $ 노트 [$ 키].

예를 들어이 루프의 원하는 출력은 다음과 같아야

12.jpg Main/folder/02/12.jpg = twelve 
16.jpg Main/folder/02/16.jpg = sixteen 

문제는 지금 모든 코드는 단지 아무것도 출력되지 않는다는 것이다. 조건이 TRUE로 돌아 오지 않는 경우를 의미합니다. 이론적으로 $ i가 0 일 때 TRUE를 반환해야합니다. & 4. if() 조건이 잘못 되었습니까? PHP는 $ imglist [$ i]를 문자열로 사용하지 않습니까? strpos를 사용해야합니까?

답변

3

in_array()은 느슨한 비교를 사용하여 요소를 검색하며 원하는 결과를 얻을 수 없습니다.

대신과 같이, 당신이 원하는 기능을 구현하기 위해 (당신이 짐작으로 strpos()를 사용하여) 자신의 논리를 사용해야합니다

foreach($imglist as $image_key => $image) 
    foreach($notes as $notes_key => $note) 
     if(!(strpos($note, $image) === false)) 
      echo "$image $note\n"; 

will output :

12.jpg Main/folder/02/12.jpg = twelve 
16.jpg Main/folder/02/16.jpg = sixteen 
+0

감사합니다, @Pox와 같은 완벽하게 작동하지만, 나는 foreach 대신 루프를 사용하도록했습니다. foreach 문에 머리를 감싸는 데 항상 문제가 있기 때문에. 이 코드는 http://codepad.org/l4V7zkgQ입니다. 이제 반복문을 반복합니다 (질문하지는 않았지만). 다시 한번보고 고마워. – DavChana

+0

한 가지, IF 조건이 TRUE를 반환하는지 (위 코드에서 링크 된 것과 같이) 귀하의 것과 비교하여 IF NOT FALSE를 말하는지 확인하여 어떤 차이가 있습니까? IF TRUE를 사용하고 있습니다. – DavChana

+1

네. 왜냐하면'strpos()'는 0을 반환 할 수 있기 때문에 버전에 의해 잘못 해석 될 것입니다. [여기에 예제가있다] (http://codepad.org/WSSPiJbw) 언제 실패 할까? 버전을 고치려면'strpos()'의 반환 값을'! == false'와 비교해 봐야합니다. – nickb

0

당신은 달성 할 수 이 사용 strpos()

$notes = array("Main/folder/02/12.jpg = twelve", 
      "Main/folder/02/16.jpg = sixteen" 
      ); 
$imglist = array("12.jpg", 
       "13.jpg", 
       "14.jpg", 
       "15.jpg", 
       "16.jpg" 
      ); 


foreach($imglist as $image){ 
foreach($notes as $key => $note){ 
$position = strpos($note,$image); 
if ($position !== false){ 
echo "$image $note <br>"; 
} 
} 
}