【发布时间】:2013-09-12 13:09:34
【问题描述】:
我正在开发一个比较两个数组的组件的 php 函数。数组中的每个值只有一个英文单词长。没有空间。没有字符。
数组#1:英语中最常用单词的列表 语言。 $common_words_array
数组#2:用户生成的句子,转换为小写,剥离 标点符号,exploded() 使用空格 (" ") 作为分隔符。 $study_array
还有一个 $com_study 数组,在本例中用于保存 跟踪被替换的常用词的顺序 $study_array 由一个“_”字符组成。
使用嵌套的 for 循环,脚本应该将 Array #2 中的每个值与 Array #1 中的每个值进行比较。当它找到一个匹配项(也就是一个常用的英语单词)时,它会做一些与当前问题无关的其他魔法。
截至目前,PHP 无法识别两个数组字符串值何时相等。我在这里将代码添加到有问题的函数中以供参考。我添加了许多不必要的回显命令,以便将问题本地化到 if 语句。
谁能看到我错过的东西?同样的算法在 Python 中也能完美运行。
function create_question($study_array, $com_study, $common_words_array)
{
for ($study=0; $study<count($study_array); $study++)
{
echo count($study_array)." total in study_array<br>";
echo "study is ".$study."<br>";
for ($common=0; $common<count($common_words_array); $common++)
{
echo count($common_words_array)." total in common_words_array<br>";
echo "common is ".$common."<br>";
echo "-----<br>";
echo $study_array[$study]." is the study list word<br>";
echo $common_words_array[$common]." is the common word<br>";
echo "-----<br>";
// The issue happens right here.
if ($study_array[$study] == $common_words_array[$common])
{
array_push($com_study, $study_array[$study]);
$study_array[$study] = "_";
print_r($com_study);
print_r($study_array);
}
}
}
$create_question_return_array = array();
$create_question_return_array[0] = $study_array;
$create_question_return_array[1] = $com_study;
return $create_question_return_array;
}
编辑:在你们这些了不起的程序员的建议下,我更新了 if 语句,使其更加简单,便于调试。见下文。仍然存在未激活 if 语句的相同问题。
if (strcmp($study_array[$study],$common_words_array[$common])==0)
{
echo "match found";
//array_push($com_study, $study_array[$study]);
//$study_array[$study] = "_";
//print_r($com_study);
//print_r($study_array);
}
编辑:应 bansi 的要求,这是我调用函数的主界面 sn-p。
$testarray = array();
$string = "This is a string";
$testarray = create_study_string_array($string);
$testarray = create_question($testarray, $matching, $common_words_array);
至于结果,我只是得到一个空白屏幕。我希望简化的 echo 语句将“找到匹配”输出到屏幕上,但这并没有发生。
【问题讨论】:
-
$study_array[study]应该是$study_array[$study] -
嗯,这很尴尬。感谢那。但即使有了这个修复,我似乎也无法得到 print_r() $com_study 和 $study_array 的代码。有什么想法吗?
-
你能告诉我们输出以及你是如何调用函数的(我是指调用变量)吗?
-
当然可以。给我一点时间再次编辑问题。
标签: php arrays comparison-operators