探讨多键值cookie(php中cookie存取数组)的详解

cookie默认不能存数组,所以下面的写法是错误的。
报错如下:
Warning: setcookie() expects parameter 2 to be string, array given in
但是PHP可以把同名且后面以[]结尾的cookie解析为数组。在php里面实现cookie存数组的方法如下:

方法一:先用serialize序列化数组,再存入COOKIE   ,读出来时用unserialize得到原来的数组

方法二:设定多键值cookie,注意必须给键值


代码如下:

$arr = array(1,2,3);  
setcookie("a[0]", $arr[0]);  
setcookie("a[1]", $arr[1]);  
setcookie("a[2]", $arr[2]);

结果:数组所有元素都存到了。
数组长度 :3
Array ( [0] => 1 [1] => 2 [2] => 3 )

以下写法是错误的:


代码如下:

$arr = array(1,2,3);  
setcookie("a[]", $arr[0]);  
setcookie("a[]", $arr[1]);  
setcookie("a[]", $arr[2]);

结果:只存了最后一个元素
数组长度 :1
Array ( [0] => 3 )

(0)

相关推荐

  • php数组键值用法实例分析

    本文实例讲述了php数组键值用法.分享给大家供大家参考.具体分析如下: 先看一个数组: <?php $switching = array( 10, // key = 0 5 => 6, 3 => 7, 'a' => 4, 11, // key = 6 (整个数组中整型键索引最大的值是5) '8' => 2, // key = 8 (字符串健'8'转换为8) '02' => 77, // key = '02'(注意不是2) 0 => 12 /*前面值为10的键被赋予

  • php数组函数序列之array_unshift() 在数组开头插入一个或多个元素

    array_unshift()定义和用法 array_unshift() 函数在数组开头插入一个或多个元素. 被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样. 该函数会返回数组中元素的个数. 语法 array_unshift(array,value1,value2,value3...)参数 描述 array 必需.规定输入的数组. value1 必需.规定插入的值. value2 可选.规定插入的值. value3 可选.规定插入的值. 提示和注释 注释:所有的数值键名

  • php中array_unshift()修改数组key注意事项分析

    本文实例分析了php中array_unshift()修改数组key注意事项.分享给大家供大家参考,具体如下: 众所周知,array_unshift()用来在数组的开头添加元素,但今天突然发现如果数组的键值是数字类型的(或能转成数字类型的),array_unshift()会修改所有键为数字的元素的Key,真是坑啊 实例: $a=array(111=>"dddddddddddd","112"=>array("one"=>"

  • php对二维数组按指定键值key排序示例代码

    复制代码 代码如下: function array_sort($array, $key){ if(is_array($array)){ $key_array = null; $new_array = null; for( $i = 0; $i < count( $array ); $i++ ){ $key_array[$array[$i][$key]] = $i; } ksort($key_array); $j = 0; foreach($key_array as $k => $v){ $ne

  • php中怎么搜索相关联数组键值及获取之

    1.搜索关联数组键如果在一个数组中找到一个指定的键,函数array_key_exists()返回TRUE,否则返回FALSE.其 形式如下:boolean array_key_exists(mixed key, array array) 下面的例子将在数组键中搜索Ohio,如果找到,将输出这个州加入美国联邦政府的育关信息:$state["Delaware"]="December 7,1787";$state["Pennsylvania"]=&qu

  • php在多维数组中根据键名快速查询其父键以及父键值的代码

    我这么想的: 遍历一遍多维数组,将所有的键建立索引生成一个一维数组: 每次通过键名去查这个键的上级数组及数据 OK,代码如下 indexKey创建索引数组函数: 复制代码 代码如下: <?php /** * FILE_NAME : arr.php FILE_PATH : test/ * 在多维数组中根据键名快速查询其父键以及父键值 * * @copyright Copyright (c) 2006-2010 mail:levi@cgfeel.com * @author Levi * @packa

  • PHP和JavaScrip分别获取关联数组的键值示例代码

    PHP版: 复制代码 代码如下: $o = array('x'=>1, 'y'=>2, 'z'=>3); $arr = array(); $i = 0; foreach( $o as $arr[$i++]=>$v )/*empty*/; var_dump($arr); //$arr = array('x', 'y', 'z'); JavaScrip版: 复制代码 代码如下: var o = {x:1, y:2, z:3}; var arr = [], i = 0; for ( ar

  • php中有关合并某一字段键值相同的数组合并的改进

    下面是实现代码: /** **关于参数的说明 **$key键值相同的键名 **$array代表原数组 **$start代表$array[0][$key] **$newkey代表相同键值相同的键名 **/ function combine_same_val($array,$start,$key,$newkey){ static $new; foreach($array as $k=>$v){ if($v[$key]==$start){ $new[$v[$newkey]][] = $v; unset

  • php使用post数组的键值创建同名变量并赋值的方法

    本文实例讲述了php使用post数组的键值创建同名变量并赋值的方法.分享给大家供大家参考.具体如下: 这段代码可以自动根据post数组的键值创建同名变量,这个功能使用非常方便,不用提前声明变量 <?php $expected=array('username','age','city','street'); foreach($expected as $key){ if(!empty($_POST[$key])){ ${key}=$_POST[$key]; } else{ ${key}=NULL;

  • php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位

    each()定义和用法 each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动. 返回的数组中包括的四个元素:键名为 0,1,key 和 value.单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据. 如果内部指针越过了数组范围,本函数将返回 FALSE. 语法 each(array)参数 描述 array 必需.规定要使用的数组. 例子 1 复制代码 代码如下: <?php $people = array("Pete

  • php获取数组中键值最大数组项的索引值 原创

    本文实例讲述了php获取数组中键值最大数组项的索引值的方法.分享给大家供大家参考.具体分析如下: 一.问题: 从给定数组中获取值最大的数组项的键值.用途如:获取班级得分最高的学生的姓名. 二.解决方法: <?php /* * Created on 2015-3-17 * Created by www.jb51.net */ $arr=array('tom'=>9,'jack'=>3,'kim'=>5,'hack'=>4); asort($arr); //print_r($ar

  • PHP按指定键值对二维数组进行排序的方法

    本文实例讲述了PHP按指定键值对二维数组进行排序的方法.分享给大家供大家参考,具体如下: 问题: 有数组: 复制代码 代码如下: array(0=>array('id'=>1,'price'=>50),1=>array('id'=>2,'price'=>60)); 要求根据数组的price这个字段进行排序. 实现代码如下: <?php $array[] = array('id'=>1,'price'=>50); $array[] = array('id

  • php数组索引与键值操作技巧实例分析

    本文实例讲述了php数组索引与键值操作技巧.分享给大家供大家参考.具体如下: <?php $array = array("a", "b","c"); //定义数组 $array[] = "Simon"; //增加一个新的数组元素 print_r($array); //输出数组 ?> <?php $array = array("a", "b","c")

  • php通过array_unshift函数添加多个变量到数组前端的方法

    本文实例讲述了php通过array_unshift函数添加多个变量到数组前端的方法.分享给大家供大家参考.具体分析如下: php通过array_unshift函数添加多个变量到数组前端,函数返回添加后的数组元素个数 <?php $alpha = array("a", "b", "c"); $final = array_unshift($alpha, "d","e"); print "Ther

随机推荐