PHP 数组元素按关键字排序

array('美国中国','我爱中国','在中国',‘中国人','中国饭店');
关键字是:中国 ,想把这个数组排列成:
array('中国人','中国饭店','在中国','美国中国','我爱中国');
反正关键字出现在元素中位置靠前的排在前面,该怎么写啊?

手打的~自己测试下有无错误。

<?php
$arr = array( '汗死啦中国饭店', '中国人', '在中国', '美国中国', '我爱中国', '美国西班牙' );
$keyword = '中国'; //关键字
$new_arr = array(); //初始化New Array
/**
* 大致意思就是,用strpos函数找出关键字出现的位置,然后生成新的数组,排序。。。
* 要注意的是,strpos在字符串开头找到关键字,会返回0。找不到关键字则返回false或者与其相等的非布尔值""所以,得判断一下~。
*/
foreach( $arr as $val ) {
$pos = trim( strpos( $val, $keyword ) );
if ( ctype_digit( $pos ) ) {
$new_arr += array( $val => $pos );
}
}
asort( $new_arr ); //升序
/**
* 最后就是显出搜索结果,Arr2Str一下就O了。
*/
echo '关键字: ' . $keyword;
echo '<br />';
echo '搜索结果: ' . implode( ',', array_keys( $new_arr ) );
/**
* 到此,这不就O了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-03
手打的~自己测试下有无错误。

<?php
$arr = array( '汗死啦中国饭店', '中国人', '在中国', '美国中国', '我爱中国', '美国西班牙' );
$keyword = '中国'; //关键字
$new_arr = array(); //初始化New Array
/**
* 大致意思就是,用strpos函数找出关键字出现的位置,然后生成新的数组,排序。。。
* 要注意的是,strpos在字符串开头找到关键字,会返回0。找不到关键字则返回false或者与其相等的非布尔值""所以,得判断一下~。
*/
foreach( $arr as $val ) {
$pos = trim( strpos( $val, $keyword ) );
if ( ctype_digit( $pos ) ) {
$new_arr += array( $val => $pos );
}
}
asort( $new_arr ); //升序
/**
* 最后就是显出搜索结果,Arr2Str一下就O了。
*/
echo '关键字: ' . $keyword;
echo '<br />';
echo '搜索结果: ' . implode( ',', array_keys( $new_arr ) );
/**
* 到此,这不就O了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
第2个回答  2010-07-21
$pos = strpos("中国饭店","中国")
echo $pos;
结果:0

这个函数会返回一个字符串在另一个字符串中排的位数
如果第第一位会返回0,第二位会返回1,以此类推。没有改字符串会返回false
需注意的是汉字在这里是按字节算的

你可以用这个函数通过起泡法重新排列数组

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网