Это проблема, с которой я сталкиваюсь в теме drupal, но проблема, кажется, какая-то эзотерическая проблема с PHP, поэтому я подумал, что попытаюсь найти ответ здесь.В чем разница между этими двумя строками в массиве 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"
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 из $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()' будет сообщать вам тип того, что также хранится. – Crontab