2011-12-28 3 views
0

이것은 드루팔 (Drupal) 테마에서 문제가되는 문제이지만, 문제는 PHP 문제로 보입니다. 따라서 여기에서 대답을 찾으려고합니다.PHP 배열에서이 두 문자열의 차이점은 무엇입니까?

$ vars [ 'theme_hook_suggestions'] 배열은 템플릿 파일을 찾는 데 사용됩니다. 이미 겉보기와 같은 값을 하드 코딩하면 템플릿을 찾습니다.

논리적으로 동일한 입력 같아야합니다 == 동일한 출력, 그래서 나는 입력이 어떻게 든 템플릿이 발견되면 다른 두 가지가되어야한다고 생각하고 다른 않습니다.

그래서이 배열에 추가 할 두 'page__gallery'문자열의 차이점은 무엇입니까? 문자열을 다시 만들고 다시 결합하여 문자열을 다시 작성하려고했습니다. 전체 문자열과 문자열의 각 문자 사이에 인코딩 비교를 시도했습니다. 모든면에서 그들은 동일하게 보입니다. 그러나 수동으로 입력하면 작동합니다. 하드 코드 문자열 값 $vars['theme_hook_suggestions']

$str2 = 'page__gallery'; 
$vars['theme_hook_suggestions'][] = $str2; // if I comment this line out, it doesn't find the template. 
print $str2; //output is page__gallery 

$str1 = $vars['theme_hook_suggestions'][3]; 
$vars['theme_hook_suggestions'][] = $str1; // if I comment this line out, it finds the template still. 
print $str1; //output is page__gallery 

print $str1 == $str2; // 1 
print $str1 === $str2; // 1 
var_dump($str1) // Outputs: string(13) "page__gallery" 
var_dump($str2) // Outputs: string(13) "page__gallery" 

위해서 var_dump :

array(6) { [0]=> string(10) "page__node" [1]=> string(13) "page__node__%" [2]=> string(14) "page__node__96" [3]=> string(13) "page__gallery" [4]=> string(20) "page__drisco_gallery" [5]=> string(13) "page__gallery" } 

먼저 하나의 작동 : 동일한 문자열 $vars['theme_hook_suggestions']

array(6) { [0]=> string(10) "page__node" [1]=> string(13) "page__node__%" [2]=> string(14) "page__node__96" [3]=> string(13) "page__gallery" [4]=> string(20) "page__drisco_gallery" [5]=> string(13) "page__gallery" } 

위해서 var_dump은 이미 재 첨부 존재 두 번째 것은 그렇지 않습니다.

도움말!

+1

'print_r' 대신에'var_dump'를 시도하고 업데이트하십시오. –

+1

'print_r()'대신'var_dump()'를 사용해보십시오.'var_dump()'는 저장되어있는 타입을 알려줄 것입니다. – Crontab

답변

0

인쇄 반환 하나는 항상 http://php.net/manual/en/function.print.php

그래서이 라인이 제대로

제안 위해서 var_dump로
print $str1 === $str2; // 1 

()가 더 나은 선택을 테스트하지 않습니다.

+0

항상 1을 반환하지만 해당 문이 거짓이면 0을 계속 출력해야합니다. 맞습니까? var_dumps로 편집했습니다. – Joren

+0

에코 프린트 1 == 0; // 인쇄 1, 인쇄 1 == 0; // 아무것도 –

관련 문제