PHP数组算术题,谁做得多就给谁

(1)有一串数字1,2,3,4,5,6,组成一个随机数组,并且第3个位置不能为5,然后5,6不能连续。。

(2)一个字符串$str="aaaabsfdsfavdchjs",找出第一个唯一存在的字符。

(3)有一堆数字,12,65,110,2,3,55,79,10,45等很多数字并且没有重复的,
要求是:输出第一个数是最大的,第二个数是最小的 ,第三个数是第二大,
第四个数是第二小...一次类推

(4)写一个函数,将一个字符串(如:1234567890),转换成(如1,234,567,890)每3位用逗号隔开的形式。

(5)请写一个函数实现获取文件的后缀名 比如: abc.exe.jpg

(6)使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

(7)写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

(8)写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

(9)给出一个字符串如 “A journey of a thousand miles must begin with a single step.” ,通过 PHP 程序处理变成 “a journeY oF A thousanD mileS musT begiN witH A singlE steP.”
[
注意:
1、每个单词最后的字符如果是大写就变成小写,如果是小写就变成大写。
2、如果单词只有一个字母,则转换这个字母,如“A” 变成 “a”,“a”变成“A”。
3、标点符号不用变化。
]

(10)请实现一个函数,输入一段文本,把文本解析到一个数组中,数组每行元素的key通过输入参数指定。函数原型:function ExplodeLines($text, $columnNames)

(11)写个function,把数组$data=array(23,22,45,28); 的个位,十位分别拆分成如下新数组$data=array(2,3,2,2,4,5,2,8);

(12)含折扣的退货算法。

函数原型: function CalcRefundAmount($orderItems, $discountAmount, $refundItems)

假设用户有一个订单,

$orderItems = array(

‘ItemA’=>array(‘price’=>5.0, ‘quantity’=>2),

‘ItemB’=>array(‘price’=>20.0, ‘quantity’=>1),

);
订单中产品ItemA的单价是5.0,数量是2;产品ItemB的单价是20,数量是1;

这个订单总价是 5.0 * 2 + 20.0 * 1 = 30。

假设最终付款的时候,由于这个订单由于使用代金券,优惠了$discountAmount = 10.0 元的价格,用户实际支付了20元。退货的时候,每个产品的退货价格是按照付款折扣率计算的。如果用户退货需要退掉1个ItemA,那么实际退给用户的钱应该是

(5.0 * 1) * (20.0/30.0) = 3.33 元(精确到2位小数)

$refundItems是实际退货的数量。在$orderItems为上述取值,$discountAmount=10的时候

样例1:$refundItems = array( array(‘ItemA’=>1) ) 表示退1个ItemA,函数返回3.33

样例2:$refundItems = array( array(‘ItemA’=>2, ‘ItemB’=>1) ) 表示全退,函数返回20.00
请编写能实现上述功能的函数。

//第一题:

//**************************************************************

$str='1,2,3,4,5,6'; //你给定的字符串
function my($str){
$item_arr=explode(',',$str);
shuffle($item_arr);
if($item_arr[3]==5){
return my($str);
}else{
for($i=0;$i<sizeof($item_arr);$i++){
if($item_arr[$i]==5 && next($item_arr)==6){
return my($str);
exit();
}
}
return $item_arr;
}
}
print_r(my($str));

//*********************************************第二题

$str="aaaabsfdsfavdchjs"; //你给出的字符串
$item=str_split($str);
$a=array_count_values($item);
foreach($a as $k=>$v){
if($v==1){
echo $k;
exit();
}
}

//*****************************************第三题

$str='12,65,110,2,3,55,79,10,45'; //这是你给定的数字字符串
$item_arr=explode(',',$str);
while(sizeof($item_arr)>0){
$max=max($item_arr);
$min=min($item_arr);
echo $max."<br/>";
echo $min."<br/>";
$max_pos=array_keys($item_arr,$max);
$min_pos=array_keys($item_arr,$min);
unset($item_arr[$max_pos[0]]);
unset($item_arr[$min_pos[0]]);
}

//****************************************第四题

$num=1234567890; //你给定的数字
echo number_format($num);

/******************************************第五题

$filename='abc.exe.jpg';
$item=pathinfo($filename);
echo $item['extension'];

/*******************************************第六题


/*****************************************第七,八题
第七第八题重复.

可以使用array_multisort()函数对二维数组进行排序

/*****************************************第9题

$str_low='abcdefghijklmnopqrstuvwxyz';
$str_upp='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$arr_low=str_split($str_low);
$arr_upp=str_split($str_upp);
$str= 'A journey of a thousand miles must begin with a single step.'; //你给出的字符串
$a=str_word_count($str,1);
foreach($a as $k=>$v){
$item=substr($v,-1,1);
if(in_array($item,$arr_low)){ //小写的情况
if(strlen($v)==1){
$item=strtoupper($v);
echo $item." ";
}else{
$item=strtoupper($item);
$item_str=substr($v,0,strlen($v)-1);
$item_str=$item_str.$item;
echo $item_str." ";
}
}elseif(in_array($item,$arr_upp)){ //大写的情况
if(strlen($v)==1){
$item=strtolower($v);
echo $item." ";
}else{
$item=strtoupper($item);
$item_str=substr($v,0,strlen($v)-1);
$item_str=$item_str.$item;
echo $item_str." ";
}
}

}

/********************************************第十题
已经看了N遍,仍然无法理解题目意思

/********************************************第十一题

$data=array(23,22,45,28);
$a=implode('',$data);
$b=str_split($a);
print_r($b);

/********************************************第十二题

体力不支,让大家打吧.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-11
这不会是老师给你布置的作业吧?嘿,自主完成老师布置的作业才是好孩子,如果有个别不会做的话,倒是乐于给你写写。。。
第2个回答  2014-10-11
好无聊额。。。
第3个回答  2014-10-11
50分12个问题.....不值得回答了都.....
相似回答