它的方法也很简单:
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、成都小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了林周免费建站欢迎大家使用!
array_rand($arr[, $num])$arr == 用来取元素的数组$num == 随机取下标的个数其中第二个参数 $num 是可选的,默认为1 。
注意:它的返回值在第二个参数大于 1 的时候是一个数组;当第二个参数不设或者传值 1 的时候是一个下标。
简单的示例代码如下:
1、第二个参数不传值的情况;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//输出 a 或者 b
2、第二个参数传值大于 1 的情况;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//输出一个随机key的数组
这个功能需求来自于网站运营策略,举倒子:
在一个排行列表中,默认有以下元素,顺序有一定的依据,假设是按下载次数排列。
$rows = array(
array('name'='QQ2010'),
array('name'='QQ2009'),
array('name'='迅雷5'),
array('name'='飞信2010'),
array('name'='Kugoo2010'),
array('name'='TTplayer'),
array('name'='Firefox4.0'),
array('name'='美图秀秀'),
array('name'='360safe'),
array('name'='Chrome6')
);
如果有一个客户[可牛杀毒]想买花10元/元下我们第二个位置,可以大家想,直接把QQ2009替换掉不就完事了吗。不,那样的话用户体验并不好,明明QQ2009是一个下载次数比较多的软件,为什么在列表中却没有了呢。
其实我们真正的需求是把QQ2009以下的单元都往后推,腾出第二个位置来给[可牛杀毒]。如果页面中只能显示10个单元,那倒霉的就是[Chrome6]了,谁叫他们付费买我们的位置呢,呵呵。
再说到程序原理上来吧,PHP要实现这个需求,挺简单,用数组函数array_splice就可以了,具体用法参照PHP手册。
给一个完整的例子吧:
?php
$rows = array(
array('name'='QQ2010',),
array('name'='QQ2009',),
array('name'='迅雷5',),
array('name'='飞信2010',),
array('name'='Kugoo2010',),
array('name'='TTplayer',),
array('name'='Firefox4.0',),
array('name'='美图秀秀',),
array('name'='360safe',),
array('name'='Chrome6',),
);
$pop = array(
'2'=array('name'='可牛杀毒'),
'5'=array('name'='金山词霸2010'),
);
foreach($pop as $key=$p){
array_splice($rows, $key-1, 0, array($p));
}
var_dump($rows);
?
最近的结果是:
array(12) {
[0]=
array(1) {
["name"]=
string(6) "QQ2010"
}
[1]=
array(1) {
["name"]=
string(8) "可牛杀毒"
}
[2]=
array(1) {
["name"]=
string(6) "QQ2009"
}
[3]=
array(1) {
["name"]=
string(5) "迅雷5"
}
[4]=
array(1) {
["name"]=
string(12) "金山词霸2010"
}
[5]=
array(1) {
["name"]=
string(8) "飞信2010"
}
[6]=
array(1) {
["name"]=
string(9) "Kugoo2010"
}
[7]=
array(1) {
["name"]=
string(8) "TTplayer"
}
[8]=
array(1) {
["name"]=
string(10) "Firefox4.0"
}
[9]=
array(1) {
["name"]=
string(8) "美图秀秀"
}
[10]=
array(1) {
["name"]=
string(7) "360safe"
}
[11]=
array(1) {
["name"]=
string(7) "Chrome6"
}
}
1. php中增加数组元素的方法:
(1)通过赋值增加数组元素 :$states[‘name’]=’Tom’;
(2)int array_push(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的末尾,成功时返回true,否则返回false,其中variable可以是多个;
(3)int array_unshift(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的数组头,成功时返回true,否则返回false,其中variable可以是多个。所有已有的数值键都会相应地修改,而关联键不受影响;
(4)array array_pad(array target_array,integer length,mixed pad_value) 将target_array 的大小增加到length指定的长度。
具体方法:
1.使用array_merge方法实现类似array_unshift在开头添加元素的功能
代码如下:
?php
$queue = array('a', 'B');
$queue = array_merge(array('front' = 'hello'), $queue);
/*
Array
(
[front] = hello
[0] = a
[1] = b
)
*/
?
2.+操作符
代码如下:
?php
$queue = array('a', 'B');
$queue = array('front' = 'Hello') + $queue;
?
输出结果与使用array_merge方法一样。
3.在元素结尾添加关联数组元素
代码如下:
?php
$queue = array('a', 'B');
$queue['front'] = 'hello';
/*
输出
Array
(
[0] = a
[1] = b
[front] = hello
)
*/
?
$a=array(0=array("name"="a","mail"="b"),1=array("name"="d","mail"="e"));
function addkey($val, $key, $param)
{
$val[$param['key']] = $param['val'];
}
array_walk($a,'addkey',array('key'='tel', 'val'='123'));
print_r($a);
不知道你是增加数组的元素还是增加数组元素中的内容?
?php
$arr=array('name'='admin','pwd'='123456');
//增加数组元素
$arr['uid']=1;
//增加某个元素的内容
$arr['name']=$arr['name'].'123';
?
用array_slice()函数
array
array_slice
(
array
myarray,
int
offset
[,
int
length]
)
返回myarray数组从地offset开始的length个元素
array_splice与上面的函数类似,只是把返回的部分删除或替代
你的问题实现方法(给你写成函数):
?php
function
array_insert($myarray,$value,$position=0)
{
$fore=($position==0)?array():array_splice($myarray,0,$position);
$fore[]=$value;
$ret=array_merge($fore,$myarray);
return
$ret;
}
?
此函数用法
返回一个数组,内容是在$myarray数组的$position处插入$value
例如:
$a=array("a",
"b","c",
"d");
$a=array_insert($a,"add",3);
print_r($a);
//Array
(
[0]
=
a
[1]
=
b
[2]
=
c
[3]
=
add
[4]
=
d
)
【代码我测试过没有问题】
本文题目:php数组指定添加数据 php二维数组添加数据
文章出自:https://www.cdcxhl.com/article8/docjgip.html
成都网站建设公司_创新互联,为您提供建站公司、商城网站、外贸建站、企业网站制作、App设计、网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联