这是我在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