PHP数组中这两个字符串之间有什么区别?

时间:2011-12-28 20:14:19

标签: php drupal

这是我在drupal主题中遇到的问题,但问题似乎是一些深奥的PHP问题,所以我想我会在这里找到答案。

$ vars ['theme_hook_suggestions']数组用于查找模板文件。现在,如果我硬编码看似已存在的相同值,它会找到模板。

从逻辑上讲,似乎相同的输入应该= =相同的输出,所以我觉得如果找到模板而另一个没有,输入必须在两者之间有所不同。

那么我追加到这个数组的两个'page__gallery'字符串之间可能有什么区别?我尝试通过拆分并重新组合来重建字符串。我已经尝试在整个字符串和字符串中的每个字符之间进行编码比较。在每种方式中它们看起来都相同,但只有在我手动输入它时才有效。

$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"

$vars['theme_hook_suggestions']的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']的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 个答案:

答案 0 :(得分:0)

打印始终返回1 http://php.net/manual/en/function.print.php

因此该行无法正确测试

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

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