php基本语法-php 语法问题 实现两个关联数组的key值得比较

问题描述

php 语法问题 实现两个关联数组的key值得比较
在下原来是做c++的,最近公司需要,做了一个php的web网站程序,用的php+mysql+jQuery+css。
现在我需要实现一个功能就是在一篇文章的最后显示与这片文章标题类似的文章的推荐,并附带链接。

我现在怀疑是不是语法的问题造成的,请帮我看看,谢谢

我的代码如下:

<?php/* * 示例代码: * 功能:完成相似关键词的查找 */$demo_title = $con ['info_title'];//echo $demo_title;$result = mysql_query(""SELECT * FROM 表名 where cate_id='12' or cate_id='13'"");$new_array =array();$count = mysql_num_rows($result);//结果条数while($row = mysql_fetch_array($result)){    if($row['info_status']==0)    {    //echo $row['info_title'];    $temp = $row['info_id'];    //echo $temp;    $new_array[$temp]=$row['info_title'];//数组赋值    //echo $new_array[$temp];    //echo ('<br/>');    }    //$demo_titile = $row['info_title'];}$resarray = getSimilars($demo_title $new_array);foreach ($resarray as $v){//对结果列表进行html输出    echo('<a href=""/index.php?tpl=content&id='.$v['info_id'].'"">'.$v['info_title'].'</a>');    echo(""<br />"");}/* * @param $title 被比较的字符串 * @param $arr_title 待比较的字符串数组,该数组为关联数组 * */function getSimilars($title $arr_title) {    $num = 0;    $ret_array = array();    foreach ($arr_title as $key=>$value)    {        //echo $title;echo ' ';echo $key;        //echo '<br />';        $percent = similar_text($value $title);//相似百分比,整数形式        //echo $percent;echo ('<br/>');        $temp_array[$key] = $percent;//构建新数组        //echo $temp_array[$key]; echo '<br />';    }    //对$temp_array数组进行排序;    arsort($temp_array);    //echo $temp_array[$key]; echo '<br />';    //根据temp_array的$key值进行查找并创建新数组    $times =  0;    foreach($temp_array as $key=>$value)    {//似乎该循环只走了第一遍,后面就不走了?        if($times<6)        {//目前只推荐6条            //echo $key;echo "" "";echo $value;echo '<br />';            $search = true;            if($search == true)            foreach($arr_title as $tempkey => $tempvalue)            {                echo $key;echo "" "";echo $tempkey;echo '<br />';                if($key==$arr_title){//似乎这个if判断没有起到任何作用                    echo ""找到目标:"";echo $key;echo "" "";echo $tempkey;echo '<br />';                    //echo $tempkey;echo "" "";echo $tempvalue;echo '<br />';                    $temp=$tempvalue;                    $ret_array[$key]=$temp;//构建新数组                    echo ""插入目标:"";echo $ret_array[key];echo "" "";echo '<br />';                    //next($temp_array);//指针下移                    $times ++;                    $search = false;                }            }            reset($arr_title);        }    }    foreach(Sret_array as $key => $value)    {        //echo $key;echo "" "";echo $value; echo ""<br />"";    }    return $ret_array;}// $title当前标题,$arrayTitle为需要查找的数组function getSimilar($title $arr_title) {    $arr_len = count ( $arr_title );    for($i = 0; $i <= ($arr_len - 1); $i ++) {        // 取得两个字符串相似的字节数        $arr_similar [$i] = similar_text ( $arr_title [$i] $title );    }    arsort ( $arr_similar ); // 按照相似的字节数由高到低排序    reset ( $arr_similar ); // 将指针移到数组的第一单元    $index = 0;    foreach ( $arr_similar as $old_index => $similar ) {        $new_title_array [$index] = $arr_title [$old_index];        $index ++;    }    return $new_title_array;}?>

另外,我的eclipse单步调试不了,总是还没进到我要调试的代码就开始报
XDEBUG_SESSION_STOP_NO_EXEC=ECLIPSE_DBGP&KEY=14229459395503
错误,是不是我配置的问题?请帮我看下

解决方案

没有人么?求帮助啊!

解决方案二:
1、similar_text 返回的是匹配的字符个数,相似度(百分比)应从第3个参数得到
similar_text($value $title $percent);

2、similar_text 只适合西文判断,对于中文这类多字节字符应以按字拆分成数组,然后取交集计算为宜

3、第一步取得相似度数组后,排序用 array_multisort($temp_array $arr_title) 就可以了

这样虽然会令 $arr_title 丢失关联键,但 $arr_title = array_combine(keys(temp_array) $arr_title) 就可找回

4、返回时用 array_slice($arr_title 0 6 true)); //你好像是要前 6 条吧

解决方案三:
其实这个和PHP 无关,是使用数据库 LIKE 关键词 查询然后显示出来

时间: 2024-11-02 09:36:48

php基本语法-php 语法问题 实现两个关联数组的key值得比较的相关文章

PHP将两个关联数组合并函数提高函数效率

 在foreach中循环查询数据代码量比较少,但是性能比较低,使用下面的字节写的函数可以解决 在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下:    使用下面的字节写的函数可以解决    从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并:  代码如下: $test1 = Ar

PHP将两个关联数组合并函数提高函数效率_php技巧

在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下: 使用下面的字节写的函数可以解决 从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并: 复制代码 代码如下: $test1 = Array( 0 => Array( 'id' => 9478137, 'create_time'

两个对象数组 ojb1[],obj2[] 每个都有十几万条记录怎么在内存中做sql运算?

问题描述 从webservice上得到了两个对象数组ojb1[],obj2[]每个都有十几万条记录!!我要对它们执行select*fromobj1fulljoinobj2....运算出新的对象数组.1.把这两个数组进数据库后再执行sql运算.那有什么办法把他批量进库(一条条insert太慢了)?2.有什么办法在直接在内存中执行sql运算(我的平台不支持linq,在linq出来之前怎么做的)? 解决方案 解决方案二:关注,帮顶!解决方案三:引用1楼mawering的回复: 关注,帮顶! 解决方案四

java数组-Java合并两个升序数组

问题描述 Java合并两个升序数组 假如ab是两个已排好序的升序数组,将数组b合并到a中,使a成为一个升序数组(这里假设a的长度大于等于a和b的元素个数之和) 解决方案 b的元素合并到a中,很可能涉及a中元素的移位,移位对于数组来说效率较低,所以建议把a和b的元素先合并到c中,然后再把c的地址赋给a:那么a.b合并的代码如下:(假设a.b是int型的数组,如果是其他类型的数组要稍稍修改程序才能用,主要是修改数组类型定义和判断数组元素大小的地方) public int [] combine(int

遍历-两个java数组比大小排序

问题描述 两个java数组比大小排序 举个例子,我现在有两个集合数组 A ={32,43,28,3,67,20, 40,0, 59 } B = {3 ,45, 18 ,83 ,30 ,28 ,40,56 ,25} 我要对两个集合数组的大小进行一 一的比较,最后整合到一个大集合数组C中,数字大的排的前面,数字小的在后面,如果AB有数字相同的,那将A组里面的数字排到B前面.求大神帮忙怎么用循环遍历来写这一段代码. 解决方案 上面写成了从小到大排序了,不好意思 public static int[]

sql 两个关联表数据删除的问题

问题描述 sql 两个关联表数据删除的问题 例 表 a 有aid和name 表b 有bid bid数据为aid值 怎么根据name删除b表数据 解决方案 delete t from b t where exists(select 1 from a where aid=t.bid and name ='你的name ') 解决方案二: delete from b where bid=(select aid from a where name='你的name') 解决方案三: delete from

mysql-请问数据库表中可以在一个表里面有两个关联同一个表的外键吗?

问题描述 请问数据库表中可以在一个表里面有两个关联同一个表的外键吗? 具体是这样的: 我有一个用户表user,一个好友表fans. fans中有三个字段 id,user_id,fans_id,其中user_id和fans_id都是跟user表的id关联的外键,我发现这样会报错. 可是用户跟好友的信息又要与用户表的信息关联,请问各位大神,怎样才不会报错或者有什么好一点的解决办法吗? 解决方案 可以的 FOREIGN KEY (user_id) REFERENCES user(id), FOREIG

c语言-两个一维数组相乘,每组数组有五个整型元素

问题描述 两个一维数组相乘,每组数组有五个整型元素 两个一维数组对应元素相乘,每组有5个整型元素,输出乘积,不知道怎么做 解决方案 #include <stdio.h> #include <stdlib.h> void main() { int a[5],b[5],c[5],i; printf("输入数组a:n"); for( i = 0;i < 5;i++) { scanf("%d",&a[i]); } printf(&quo

高手帮忙,两个字符串数组第一个元素分别加到第二个数组的各个元素上

问题描述 高手帮忙,两个字符串数组第一个元素怎样分别加到第二个数组的各个元素上 解决方案 解决方案二:arr2[0]+arr1[0],遍历数组执行解决方案三:++引用1楼的回复: arr2[0]+arr1[0],遍历数组执行