当前位置:首页 » 编程语言 » php关联数组

php关联数组

发布时间: 2022-01-27 08:59:06

‘壹’ 请问php中什么是关联数组

$array=array(1,2,3,'k'=>'6');

echo $array['k'];//输出6,这就是关联数组,注意K与6的关系

‘贰’ 如何添加,删除PHP关联数组

示例如下:

<?php
//定义一个数组
$arr=array();

//添加元素
$arr['name']='';
$arr['url']='com';

//删除某个元素
unset($arr['url']);

//删除数组
unset($arr);

‘叁’ php判断数组是关联数组还是数值数组

具体思路:获取数组的所有键:“array_keys()”
遍历所有键判断是否按照顺序从0开始每个增一。
具体方法如下:
function _checkAssocArray($arr)
{
$index = 0;
foreach (array_keys($arr) as $key) {
if ($index++ != $key) return false;
}
return true;
}
逻辑很简单,关联数组的键不会全部都按照:0,1,2,3…的顺序递增,如果它确实这样,那么和数值数组没有任何区别,相同处理即可。
网上有另外一种思路:将数组所有的键与一个(0,数组长度)的新数组求差,

‘肆’ PHP怎样给一个关联数组的头部增加一项

一维hash数组用array_merge可以的,多维混合下标且存在重复下标时,要慎用array_merge(还是逐一遍历数组元素更妥当,lotusphp的db配置数组就遇到过),会出现意...

‘伍’ php 如何将查询的结果集放到关联数组

$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
$rows[]=$row;

}
print_r($rows);

‘陆’ 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')
);

如果有一个客户[可牛杀毒]想买花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_mp($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"
}
}

‘柒’ php怎么把关联数组转成索引数组

PHP和PERL、VB不同,其只有“数组”,没有单独的“关联数组”类型,实际上PHP的所有数组都是关联数组,当没有指定键值的时候,键值为0、1、2……
php中定义数组的方法:
PHP定义数组的格式
数组名=array();
如:$aa=array();//这样就定义了一个数组,
之后给元素赋值:
$aa[0]="9016";
$aa[1]="9017";
$aa[2]="9018";
PHP输出数组的方法:
foreach($aa as $val)
{echo$val;}
也可以在定义数组时直接赋值
$aa=array(0=>"9016",1=>"9017";2=>"9018");
PHP的数组还可以用字符做下标,不一定要数字.
$aa["name"]="Joan";
$aa["num"]="9018";
$aa["email"]="[email protected]";
也可以这样
$aa=array("name"=>"joan","num"=>"9018","email"=>"[email protected]");
将一个一维数组的元素也定义为数组,就是一个二维数组,
$aa=array(0=>"a1",1=>"a2");
$bb=array(0=>"b1",1=>"b2");
$cc=array(0=>$aa;1=>$bb);此时,$cc[0]也是一个数组,$cc[1]也是一个数组,$cc就是一个二维数组。
同理,三维,四维数组也可以继续定义下去。
数组的元素不仅于数字和字符串,可以是类的对象。

‘捌’ php 怎么把索引数组赋值给关联数组

在PHP中可以用关联数组的形式表示如下:
$grade=array(name=>li kui,age=>163);
只要指出一点的就是=>,这个运算符非常的形象,一看就能够明白:键为name的值是li kui;键为age的值是163。当然你也可以用以下的形式来创建关联数组:
$grade["name"]=li kui;
$grade["age"]=16;
PHP中的多维数组
在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推。同样我们以学校里的班级为例来说明如何定义多维数组。
所谓多维数组,无非就是在“一维数组”中再加入一个数组,这就是嵌套吧。在学校里我们知道,一个年级可能有多个班级,如一班、二班、三班等,用多维数组表示如下:
$school=array(1=>array(name=>li kui,age=>163),
2=>array(name=>wu song,age=>183)
&&
);
如果你要访问wu song,按如下的形式访问即可:
print $school[2][name]; //输出wu song

‘玖’ php 多个一维关联数组去重

因为不太了解你其他业务,这里通过对多个数组观察发现,他们的键名都是一致的。所以有2个简单的办法

(1)先翻转一维数组,然后进行合并,再翻转回来

这里就不写详细代码,写下简单过程

  1. $array_a =array_flip($array_a);

    这样交换后的数组内容如下

    Array
    (
    [DHL] =>carrier
    )

    Array
    (
    [HKPT] =>carrier
    )

    ....

  2. 合并数组,使用array_merge,数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值

    $mergeArray = array_merge($array_a,$array_b,$array_c...);

    这样得到一个数组,里面的元素都是键名不重复的,内容如下

    Array

    (

    [DHL] =>carrier

    [HKPT] =>carrier

    ....

    )

  3. 还原数组,这里如果要完全打散成一个一个的一维数组,就直接array_shift,同时翻转回来

    $array_a =array_shift($mergeArray);$array_a =array_flip($array_a);

    $array_b =array_shift($mergeArray);$array_b=array_flip($array_b);

    ...

    这里一个一个执行可以用for循环替代,数组中有多少个元素就执行多少次,




(2)最简单的办法,只从你提供的例子来说,键名都一样,直接先去掉键名,然后组合成一个数字索引的数组,直接array-unique,再把键名放回去


如果有不清楚可以发消息

‘拾’ PHP 关联数组应用问题

不会报错,如果你的程序报错了那就是因为你的变量少了$,$Books,因为php的++操作会自动强制转换成int,没有初始化的会从0开始。 这种问题直接运行测试就能知道结果,少点上来问,多动手,别瞎猜。

热点内容
编程图片平移 发布:2024-11-16 07:41:06 浏览:652
黄金数算法 发布:2024-11-16 07:40:15 浏览:65
门锁动态密码是什么样的 发布:2024-11-16 07:39:33 浏览:912
namespacelinux 发布:2024-11-16 07:28:13 浏览:352
html去缓存 发布:2024-11-16 07:05:22 浏览:723
如何限制苹果ip段访问服务器 发布:2024-11-16 07:02:57 浏览:661
knn算法原理 发布:2024-11-16 06:56:18 浏览:854
c语言第一章 发布:2024-11-16 06:49:07 浏览:51
服务器ip黑名单和网站ip黑名单区别 发布:2024-11-16 06:45:56 浏览:888
上传图片命名规则 发布:2024-11-16 06:28:37 浏览:557