這是我在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:的$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爲已經存在重新附加:
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'並更新。 – 2011-12-28 20:22:10
嘗試使用'var_dump()'而不是'print_r()'作爲'var_dump()'會告訴你所存儲的類型。 – Crontab 2011-12-28 20:23:12