⑴ php 任意组合求合
$arr=array(1,2,3,4,5,6,7,8,9);
functionisten($arr){
if(!is_array($arr)){thrownewException("传入的必须是数组");}
$len=count($arr);
$count=mt_rand(1,$len);
$num=0;
$tem=array();
for($i=0;$i<$count;++$i){
$n=mt_rand(0,$len-1);
$num+=$arr[$n];
$tem[]=$arr[$n];
}
$re=array(
'num'=>$num,
'tem'=>$tem,
);
return$re;
}
/*//要了解具体的执行过程,可以用这段代码
$times=0;
$plus=0;
while($plus!=10){
$re=isten($arr);
$times++;
echo"尝试次数:".$times,",";
echo"随机抽取".count($re['tem']).'个元素:';
$str="";
foreach($re['tem']as$v){
$str.=$v."+";
}
$str=substr($str,0,strlen($str)-1);
echo$str;
echo'='.$re['num'],"<br>";
$plus=$re['num'];
}*/
//每次要获取销拦结果为10时,所需要尝试的资料
functionget_times($arr){
$times=0;
while(true){
$re=isten($arr);
$num=$re['num'];
$times++;
租帆if($num==10){
return$times;break;
}
}
}
//echoget_times($arr);
//计算平均需要尝试的次数:
$t=0;
for($i=0;$i<100000;++$i){
$t+=get_times($arr);
}
echo"平均需要尝试的次数是:".$t/100000;
//结弊斗雹论:通过100000次的计算,得出的平均尝试次数是51-52次之间。
⑵ get传值字符串转化为数组 php
可以键派用parse_str这个函宽亮槐数,
$re = 'a=1&b=2&c=3';
parse_str($re, $output);
var_mp($output);
结果:array(3) { ["a"]=> string(1) "1" ["b"]=>慎友 string(1) "2" ["c"]=> string(1) "3" }
⑶ php 用print_r($_GET)查看数组发现名称后面多了个下划线_
location.href = '?action = delete';
把空格删了试试
⑷ 如何运用PHP函数array
PHP Array函数是PHP 核心的组成部分。无需安装即可使用这些函数。
array()
创建数组。
array_change_key_case()
返回其键均为大写或小写的数组。
array_chunk()
把一个数组分割为新的数组块。
array_column()
返回输入数组中某个单一列的值。
array_combine()
通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。
array_count_values()
用于统计数组中所有值出现的次数。
array_diff()
比较数组,返回两个数组的差集(只比较键值)。
array_diff_assoc()
比较数组,返回两个数组的差集(比较键名和键值)。
array_diff_key()
比较数组,返回两个数组的差集(只比较键名)。
array_diff_uassoc()
比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_diff_ukey()
比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
array_fill()
用给定的键值填充数组。
array_fill_keys()
用给定的指定键名的键值填充数组。
array_filter()
用回调函数过滤数组中的元素。
array_flip()
反转/交换数组中的键名和对应关联的键值。
array_intersect()
比较数组,返回两个数组的交集(只比较键值)。
array_intersect_assoc()
比较数组,返回两个数组的交集(比较键名和键值)。
array_intersect_key()
比较数组,返回两个数组的交集(只比较键名)。
array_intersect_uassoc()
比较数组,返回两个数组的交集(比较键名和键值,使用用户自定义的键名比较函数)。
array_intersect_ukey()
比较数组,返回两个数组的交集(只比较键名,使用用户自定义的键名比较函数)。
array_key_exists()
检查指定的键名是否存在于数组中。
array_keys()
返回数组中所有的键名。
array_map()
将用户自定义函数作用到给定数组的每个值上,返回新的值。
array_merge()
把一个或多个数组合并为一个数组。
array_merge_recursive()
递归地把一个或多个数组合并为一个数组。
array_multisort()
对多个数组或多维数组进行排序。
array_pad()
将指定数量的带有指定值的元素插入到数组中。
array_pop()
删除数组中的最后一个元素(出栈)。
array_proct()
计算数组中所有值的乘积。
array_push()
将一个或多个元素插入数组的末尾(入栈)。
array_rand()
从数组中随机选出一个或多个元素,返回键名。
array_rece()
通过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。
array_replace()
将所有被替换数组中的元素替换成第一个数组。
array_replace_recursive()
将所有被替换数组中的元素递归地替换成第一个数组。
array_reverse()
将原数组中的元素顺序翻转,创建新的数组并返回。
array_search()
在数组中搜索给定的值,如果成功则返回相应的键名。
array_shift()
删除数组中的第一个元素,并返回被删除元素的值。
array_slice()
返回数组中的选定部分。
array_splice()
把数组中的指定元素去掉并用其它值取代。
array_sum()
返回数组中所有值的和。
array_udiff()
比较数组,返回两个数组的差集(只比较键值,使用一个用户自定义的键名比较函数)。
array_udiff_assoc()
比较数组,返回两个数组的差集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_udiff_uassoc()
比较数组,返回两个数组的差集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_uintersect()
比较数组,返回两个数组的交集(只比较键值,使用一个用户自定义的键名比较函数)。
array_uintersect_assoc()
比较数组,返回两个数组的交集(比较键名和键值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_uintersect_uassoc()
比较数组,返回两个数组的交集(比较键名和键值,使用两个用户自定义的键名比较函数)。
array_unique()
删除数组中重复的值。
array_unshift()
在数组开头插入一个或多个元素。
array_values()
返回数组中所有的值。
array_walk()
对数组中的每个成员应用用户函数。
array_walk_recursive()
对数组中的每个成员递归地应用用户函数。
arsort()
对关联数组按照键值进行降序排序。
asort()
对关联数组按照键值进行升序排序。
compact()
创建一个包含变量名和它们的值的数组。
count()
返回数组中元素的数目。
current()
返回数组中的当前元素。
each()
返回数组中当前的键/值对。
end()
将数组的内部指针指向最后一个元素。
extract()
从数组中将变量导入到当前的符号表。
in_array()
检查数组中是否存在指定的值。
key()
从关联数组中取得键名。
krsort()
对关联数组按照键名降序排序。
ksort()
对关联数组按照键名升序排序。
list()
把数组中的值赋给一些数组变量。
natcasesort()
用"自然排序"算法对数组进行不区分大小写字母的排序。
natsort()
用"自然排序"算法对数组排序。
next()
将数组中的内部指针向前移动一位。
pos()
current() 的别名。
prev()
将数组的内部指针倒回一位。
range()
创建一个包含指定范围的元素的数组。
reset()
将数组的内部指针指向第一个元素。
rsort()
对数值数组进行降序排序。
shuffle()
把数组中的元素按随机顺序重新排列。
sizeof()
count() 的别名。
sort()
对数值数组进行升序排序。
uasort()
使用用户自定义的比较函数对数组中的键值进行排序。
uksort()
使用用户自定义的比较函数对数组中的键名进行排序。
usort()
使用用户自定义的比较函数对数组进行排序。
Array(arglist)
作用: 创建数组并给数组赋值
arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则将会创建零长度的数组。
例:一般创建数组的方法为
Dim AA(2)
AA(0)=10
AA(1)=20
AA(2)=30
MsgBox AA(2)
如果像以上的话比较繁琐那么如果用array函数呢?
Dim AA
AA=Array(10,20,30)
B=AA(2)
MsgBox B
这样的话过程就比较简单用的时候拿出来就行了。
static Object get(Object array, int index)
返回指定数组对象中索引组件的值。
static boolean getBoolean(Object array, int index)
以 boolean 形式返回指定数组对象中索引组件的值。
static byte getByte(Object array, int index)
以 byte 形式返回指定数组对象中索引组件的值。
static char getChar(Object array, int index)
以 char 形式返回指定数组对象中索引组件的值。
static double getDouble(Object array, int index)
以 double 形式返回指定数组对象中索引组件的值。
static float getFloat(Object array, int index)
以 float 形式返回指定数组对象中索引组件的值。
static int getInt(Object array, int index)
以 int 形式返回指定数组对象中索引组件的值。
static int getLength(Object array)
以 int 形式返回指定数组对象的长度。
static long getLong(Object array, int index)
以 long 形式返回指定数组对象中索引组件的值。
static short getShort(Object array, int index)
以 short 形式返回指定数组对象中索引组件的值。
static Object newInstance(Class<?> componentType, int length)
创建一个具有指定的组件类型和长度的新数组。
static Object newInstance(Class<?> componentType, int[] dimensions)
创建一个具有指定的组件类型和维度的新数组。
static void set(Object array, int index, Object value)
将指定数组对象中索引组件的值设置为指定的新值。
static void setBoolean(Object array, int index, boolean z)
将指定数组对象中索引组件的值设置为指定的 boolean 值。
static void setByte(Object array, int index, byte b)
Array 对象用于在单个的变量中存储多个值。
参数
参数size是期望的数组元素个数。返回的数组,length 字段将被设为size的值。
参数element...,elementn是参数列表。当使用这些参数来调用构造函数 Array() 时,新创建的数组的元素就会被初始化为这些值。它的 length 字段也会被设置为参数的个数。
返回值
返回新创建并被初始化了的数组。
如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
当调用构造函数时只传递给它一个数字参数,该构造函数将返回具有指定个数、元素为 undefined 的数组。
当其他参数调用 Array() 时,该构造函数将用参数指定的值初始化数组。
当把构造函数作为函数调用,不使用 new 运算符时,它的行为与使用 new 运算符调用它时的行为完全一样。
⑸ php数组,有什么办法获取下一个元素的键值
方法一:用循环
function getNext(&$array, $curr_key)
{
$next = 0;
reset($array);
do
{
$tmp_key = key($array);
$res = next($array);
} while ( ($tmp_key != $curr_key) && $res );
if( $res )
{
$next = key($array);
}
return $next;
}
function getPrev(&$array, $curr_key)
{
end($array);
$prev = key($array);
do
{
$tmp_key = key($array);
$res = prev($array);
} while ( ($tmp_key != $curr_key) && $res );
if( $res )
{
$prev = key($array);
}
return $prev;
}
方法二:用Iterator,不过要先得到position
// 默认查找键为key元素的后一个元素
function get_element($key, $arr, $who='next')
{
//查找键为$key元素的位置
$offset = array_search($key, array_keys($arr));
if(FALSE == $offset || NULL == $offset) { return ;}
//查找哪个元素,前一个或后一个?
if ('prev' == $who) {
$arr = array_reverse($arr);
} else if ('next' == $who) {
} else {
throw new Exception("错误的参数");
}
对许多方法 都可以在后盾里面找到 而且很详细 很容易理解
⑹ PHP 中如何用 GET/POST 方式分别传递与接收一个数组
<formaction="index.php"method="post"><!--get方法也是可以的--!>
<inputtype="checkbox"name="chk[]"value="1">第一个
<inputtype="checkbox"name="chk[]"value="2">第二个
<inputtype="checkbox"name="chk[]"value="3">第三个
<inputtype="submit"name="submit"value="提交">
</form>
主要name属性的值,chk[]是一个数组的形式
php代码:
$_POST['chk'];//获取的是一个选中的复选框的值组成的数组,遍历这个数组就可以得到每个值
可以参考一下
⑺ PHP从数组中取出多个数值。
$arr = array(1,2,3,4,5,6,7,8,9,10);
$myWant = array();
for($i=0;$i<3;$i++)
{
$len = sizeof($arr);
$j = rand(0,$len-1);
$myWant[] = $arr[$j];
if($j==$len-1)
unset($arr[$len-1]);
else
{
$arr[$j] = $arr[$len-1];
unset($arr[$len-1]);
}
}
print_r($myWant);
PHP手册里根本没有array_rand函数
⑻ PHP遍历数组的方法汇总
今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个。顺便写个文蚂源章总结下,如果总结不全还请朋友们指出
第一、foreach()
foreach()是一个用来遍历数组中数据的最简单有效的方法。
<?php
$urls=
array('aaa','bbb','ccc','ddd');
foreach
($urls
as
$url){
echo
"This
Site
url
is
$url!
<br
/>";
}
?>
显示结果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第二、while()
和
list(),each()配合使用。
<?php
$urls=
array('aaa','bbb','ccc','ddd');
while(list($key,$val)=
each($urls))
{
echo
"This
Site
url
is
$val.<br
/>";
}
?>
显示结果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
第三、for()运用for遍历数组
<?php
$urls=
array('aaa','bbb','ccc','ddd');
for
($i=
0;$i<
count($urls);
$i++){
$str=
$urls[$i];
echo
"This
Site
url
is
$str.<br
/>";
}
?>
显示结果:
This
Site
url
is
aaa
This
Site
url
is
bbb
This
Site
url
is
ccc
This
Site
url
is
ddd
有时候有人也在问这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了
===========
下面来测试三种遍历数组的速度
===========
一般情况下,遍历蠢首一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。
<?php
$arr=
array();
for($i=
0;
$i<
50000;
$i++){
$arr[]=
$i*rand(1000,9999);
}
function
GetRunTime()
{
list($usec,$sec)=explode("
",microtime());
return
((float)$usec+(float)$sec);
}
######################################
$time_start=
GetRunTime();
for($i=
0;
$i<
count($arr);
$i++){
$str=
$arr[$i];
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
for:'.round($time_used,
7).'(s)<br
/><br
/>';
unset($str,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
while(list($key,
$val)=
each($arr)){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
while:'.round($time_used,
7).'(s)<br
/><br
/>';
unset($str,
$key,
$val,
$time_start,
$time_end,
$time_used);
######################################
$time_start=
GetRunTime();
foreach($arr
as$key=>
$val){
$str=
$val;
}
$time_end=
GetRunTime();
$time_used=
$time_end-
$time_start;
echo
'Used
time
of
foreach:'.round($time_used,
7).'(s)<br
/><br
/>';
?>
测试结果:
Used
time
of
for:0.0228429(s)
Used
time
of
while:0.0544658(s)
Used
time
of
foreach:0.0085628(s)
经过带物数反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。
以上所述就是本文的全部内容了,希望大家能够喜欢。