PHP 数组元素按关键字排序
array('美国中国','我爱中国','在中国',‘中国人','中国饭店');关键字是:中国,想把这个数组排列成:array('中国人','中国饭店','在中国','美...
array('美国中国','我爱中国','在中国',‘中国人','中国饭店');
关键字是:中国 ,想把这个数组排列成:
array('中国人','中国饭店','在中国','美国中国','我爱中国');
反正关键字出现在元素中位置靠前的排在前面,该怎么写啊? 展开
关键字是:中国 ,想把这个数组排列成:
array('中国人','中国饭店','在中国','美国中国','我爱中国');
反正关键字出现在元素中位置靠前的排在前面,该怎么写啊? 展开
3个回答
展开全部
手打的~自己测试下有无错误。
<?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了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
<?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了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
展开全部
手打的~自己测试下有无错误。
<?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了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
<?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了吗!如果你想写的细致一点就把关键字在“搜索结果”里加亮。很简单的~自己动手搞吧~~:)
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$pos = strpos("中国饭店","中国")
echo $pos;
结果:0
这个函数会返回一个字符串在另一个字符串中排的位数
如果第第一位会返回0,第二位会返回1,以此类推。没有改字符串会返回false
需注意的是汉字在这里是按字节算的
你可以用这个函数通过起泡法重新排列数组
echo $pos;
结果:0
这个函数会返回一个字符串在另一个字符串中排的位数
如果第第一位会返回0,第二位会返回1,以此类推。没有改字符串会返回false
需注意的是汉字在这里是按字节算的
你可以用这个函数通过起泡法重新排列数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询