2011-12-28 49 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:的$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" } 

第一个作品,第二个不是。

帮助!

+1

尝试'var_dump'而不是'print_r'并更新。 – 2011-12-28 20:22:10

+1

尝试使用'var_dump()'而不是'print_r()'作为'var_dump()'会告诉你所存储的类型。 – Crontab 2011-12-28 20:23:12

回答

0

打印返回1总是 http://php.net/manual/en/function.print.php

所以这行不正确测试

print $str1 === $str2; // 1 

至于建议的var_dump()是更好的选择。

+0

它总是返回1,但它应该仍然打印0如果该语句为false,对不对?我编辑了var_dumps。 – Joren 2011-12-28 21:35:47

+0

echo print 1 == 0; //打印1,打印1 == 0; // 没有 – 2012-01-03 09:09:00