이것은 드루팔 (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은 이미 재 첨부 존재 두 번째 것은 그렇지 않습니다.
도움말!
'print_r' 대신에'var_dump'를 시도하고 업데이트하십시오. –
'print_r()'대신'var_dump()'를 사용해보십시오.'var_dump()'는 저장되어있는 타입을 알려줄 것입니다. – Crontab