Php 比较两个字符串
我有一个php脚本不能正常工作 当我使用strcmp测试它时,它在正确的时间返回0,但是if语句仍然返回false keywords.php的内容Php 比较两个字符串,php,string,compare,Php,String,Compare,我有一个php脚本不能正常工作 当我使用strcmp测试它时,它在正确的时间返回0,但是if语句仍然返回false keywords.php的内容 <?php $cat_array = array("All Deals","Arts & Crafts","Automotive","Dental","Education & Training","Entertainment","Fashion","Fitness & Health","Floral","Fun &
<?php $cat_array = array("All Deals","Arts & Crafts","Automotive","Dental","Education & Training","Entertainment","Fashion","Fitness & Health","Floral","Fun & Adventure","Home & Garden","Pets","Photography","Restaurants","Spa & Beauty","Sports","Subscriptions","Tours & Attractions","Trade Shows","Travel","Workshops");
$cat_nav_array = array("alldeals","arts_crafts","automotive","dental","education_training","entertainment","fashion","fitness_health","floral","fun_adventure","home_garden","pets","photography","restaurants","spa_beauty","sports","subscriptions","tours_attractions","tradeshows","travel","workshops");
主页的php代码
<?php
require_once("keywords/keywords.php");
$count = 0;
$category = $_GET['category'];
foreach ($cat_array as $link)
{
$count++;
}
for ($i = 0; $i <= $count; $i++)
{
$link = $cat_nav_array{$i};
$text = $cat_array{$i};
if ($category === $link)
{
?>
<li><a class="ch_selected" href="<?php echo $_SERVER['HTTP_HOST']?>/chunky/others/?category=<?php echo $link?>" title="View all Deals from <?php echo $text ?>"><?php echo $text?></a></li>
<?php
}
else
{?>
<li><a href="<?php echo $_SERVER['HTTP_HOST']?>/chunky/others/?category=<?php echo $link ?>" title="View all Deals from <?php echo $text ?>"><?php echo $text?></a></li>
<?php
}
} ?>
工作代码:
<?php
require_once("keywords/keywords.php");
$count = 0;
$category = strtolower($_GET['category']);
foreach ($cat_array as $link)
{
$count++;
}
for ($i = 0; $i <= $count; $i++)
{
$link = $cat_nav_array{$i};
$text = $cat_array{$i};
$same = strcmp($link, $category);
if ($same != 0)
{
?>
<li><a href="<?php echo $_SERVER['HTTP_HOST']?>/chunky/others/?category=<?php echo $link?>" title="View all Deals from <?php echo $text ?>"><?php echo $text?></a></li>
<?php
}
else
{?>
<li class="ch_selected"><a href="<?php echo $_SERVER['HTTP_HOST']?>/chunky/others/?category=<?php echo $link ?>" title="View all Deals from <?php echo $text ?>"><?php echo $text?></a></li>
<?php
}
} ?>
与if($catagory===$link)
试着在if行的前面做一个var\u转储($link,$catagory)
,看看这两个变量是否真的相同。我的答案可能有点离题,但如果我回忆正确,那不是比较字符串的方法。
请参考以下内容:var\u在if语句之前转储这两个变量,并将其发布到此处。您为什么不在$\u GET['category']
上应用strtolower
?您还缺少echo
此处
。它应该是
我不需要在$\u GET['catagory']bc上使用strtolower,因为它已经是小写的了。但是要确定的是,如果=
给出false,你应该strtolower
也应该是$\u GET(以及清理它,你永远不知道用户是否要手动编写它并使用所有大写字母),然后,在比较类型时,==
也会给出false。我同意你的观点,==
总是比=
好,但在这种情况下,它无法解决解释差异的问题。比较字符串没有“正确的方式”或“错误的方式”——这完全取决于你试图通过比较实现什么。唯一可能被定义为“错误”的是错误地使用赋值运算符(=)而不是比较运算符(=)。这在PHP中并不重要,在基于目标的语言(如Java或JavaScript)中很重要,String
是一个对象,比较两个字符串将返回false(因为你不是在比较值,你是在比较指向内存中对象的指针)。我不知道你的“对”和“错”是什么,但就我而言,如果操作符在我的书中没有正确地比较字符串(事实上它没有),这是错误的做法。如果用户查看链接,我认为他会找到他需要的东西。