php给数组赋值(二维数组赋值)详解

 更新时间:2016年11月25日 15:02  点击:1326
在php中数组赋值很简单,如果是一维数组赋值比二维数组或多维数组更简单,下面我来给各位同学介绍给数组赋值各种实例介绍,有需要了解的朋友可参考。

PHP数组赋值呢?如下:

例1,一维数组赋值

 代码如下 复制代码

$My_array=array(); 
$My_array[]=”www”  
$My_array[]=”helpphp”;  
$My_array[]=”cn”;


销毁数组

 代码如下 复制代码

unset($My_array[0];
unset($My_array); 


例2,二维数组赋值

 代码如下 复制代码

$data_array=array($total,2);//其中$datarows为查询得到的记录数 
$data_array[$i][2]=$Area;//提示错误:Cannot use a scalar value as an array 


具体的循环如下

 代码如下 复制代码

$i=0;
 while($result=$db->fetch_array($query))
 {  $Area=$result["Area"];
 $data_array[$i][2]=$Area; //出错! 
$i=$i+1;    
}  

在php中set_time_limit函数是用来限制页面执行时间的,如我想把一个php页面的执行时间定义为5秒就可以set_time_limit(5)了。

一个php脚本通过crontab每5分钟执行一次,考虑到脚本执行时间会超过5分钟,特意用set_time_limit(290)来控制脚本在290秒退出。某天突然发现后台有多个该脚本的进程在执行,也就是说set_time_limit(290)没有起作用。为了证明,特意使用如下代码测试。

 代码如下 复制代码

set_time_limit(5);

for ($i = 0; $i < 100; $i++) {
    echo date('Y-m-d H:i:s') . "n";
    sleep(1);
}

无论是在web还是CLI下,上述脚本并没有在5秒钟后退出。后来加上ini_set(‘max_execution_time’, 5)测试,结果一样。那是不是说明set_time_limit函数根本就没有用呢?其实不然,在 http://stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli 这里找到根源所在,其实是上面的写法有问题,例如使用下述代码:

 代码如下 复制代码

set_time_limit(5);

for (;;) {
}

执行后,大概5秒钟就可以看到”Fatal error: Maximum execution time of 5 seconds exceeded in”类似这样的错误提示。说明set_time_limit是起作用的。现在在去看看官方文档(http://www.php.net/manual/en/function.set-time-limit.php)上关于此函数的说明,在Note中写到:

The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.

 

 代码如下 复制代码
<?php
//set_time_limit(0);
$i=1500;
include ("inc/conn.php");
while($i>0)
{
$sql="INSERT INTO php (php)
VALUES ('$i')";
if ($conn->execute($sql)===flase)
{
//echo "数据插入错误".$conn->errormsg();
}
else
{
$phpid=$conn->Insert_ID();
echo $i."已经存入数据库,编号:".$phpid;
}
$i--;
echo "<hr>";
}
?>

注意:sleep函数暂停的时间也是不计入脚本的执行时间的。所以也是第一个测试失败的原因。

当你的页面有大量数据时,建议使用set_time_limit()来控制运行时间,默认是30s,所以需要你将执行时间加长点,如 set_time_limit(300)  ,其中将秒数设为0 ,表示持续运行!

如:set_time_limit(0)表示长时间链接运行!

注意:这个函数的运行需要你关闭安全模式,在php.ini中将safe_mode = Off 安全模式设置为Off,否则将会出现下面错误:

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit in safe mode in

再次注意的是:

在php.ini可以通过定义max_execution_time来设置PHP页面的最大执行时间,比如下面:

 代码如下 复制代码
set_time_limit(900);

这个函数指定了当前所在php脚本的最大执行时间,
虽然设定值是900秒,实际上
最大执行时间=php.ini里的max_execution_time数值 - 当前脚本已经执行的时间 + 设定值
假如php.ini里的max_execution_time=30,当前脚本已经执行10秒,则:
最大执行时间=30-10+900=920秒。

php中设置set_time_limit不起作用的解决方法:

set_time_limit用来设置脚本的超时时间,用法如下:

set_time_limit(秒数);
规定从该句运行时起程序必须在指定秒数内运行结束,
超时则程序出错退出.
但是有时候设置set_time_limit没有效果,set_time_limit函数最好是在linux下执行,windows执行可能也无效
解决方法:
修改php.ini里的max_execution_time = 30了。这个默认是30秒,修改为max_execution_time = 300.重新启动apache服务器。这样超时设置为300秒就有提示信息了.

今天早想做一个功能用户登录之后我把用户的名字保存到cookie中但是我开始使用读取cookie 的方法,但是没效果,后来发现使用setcookie()后面必须带时间才可以,下面我来介绍一下。

语法
setcookie(name,value,expire,path,domain,secure)

参数     描述
name 必需。规定 cookie 的名称。
value 必需。规定 cookie 的值。
expire 可选。规定 cookie 的有效期。
path 可选。规定 cookie 的服务器路径。
domain 可选。规定 cookie 的域名。
secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。


例,一个简单给cookie赋值

 代码如下 复制代码

<?php
$value = "my cookie value";

// 发送一个 24 小时候过期的 cookie
setcookie("TestCookie",$value, time()+3600*24);
?>


例,二维数组存储到cookie

a.php

 代码如下 复制代码

<?
$cart_info[0][0] = "1123";
$cart_info[1][0] = "5334521";
$cart_info[1][2] = "df";
$cart_info[4][2] = "fefe";

setcookie("xia",serialize($cart_info));
?>

b.php

 代码如下 复制代码

<?
$other = StripSlashes($_COOKIE['xia']);
print_r(unserialize($other));
?>

变量用于存储值,比如数字、字符串或函数的结果,这样我们就可以在脚本中多次使用它们了变量用于存储值,比如数字、文本字符串或数组。

一旦设置了某个变量,我们就可以在脚本中重复地使用它。

PHP 中的所有变量都是以 $ 符号开始的。

PHP的代码插入很直观,"<?php" 开始 "?>" 结束。

 
所有的变量以"$"开头,例如"$money"。(定义符容易让人遐想)需要使用时,定义即可,可以省略对变量类型的定义,php的编译器会自动为我们选择的。

 
对于条件判断语句,php和c差不多。if(条件A){过程A}即可,还有就是else和elseif。else用于运行条件A以外的过程,elseif(条件N....)则是其他条件为真时运行的代码。

下面是自己写的代码:

 代码如下 复制代码

if.php
<html>  
<body>  
<center>  
<form action="if.php" method="post">  
<input type="radio" name="sex" value="male" /> 男性  
</br>  
<input type="radio" name="sex" value="female" /> 女性  
</br>  
<input type="submit" value="提交" />  
</form>  
<?php  
$sex = $_POST["sex"];  
if($sex=="male")  
{  
    echo "男性";  
}  
elseif($sex=="female")  
{  
    echo "女性";  
}  
else  
{  
    echo "未知性别";  
}  
  
?>  
</center>  
</body>  
</html>  

代码的意思就是通过表单以POST方式提交性别选项,分别是男性和女性,然后交给php接收post上来的数据,并传给sex变量。最后进行判断,如果是male则输出男性,female输出女性,其它情况输出未知。

提交后

文中提到的if.php可以到这里测试


然后就是switch,这个也很好理解,类似于if和elseif的组合,只不过遇到很多种条件需要判断时,switch回把代码变得很简洁直观。

PHP代码

 代码如下 复制代码
switch (变量名)  
{  
case 值1:  
  code to be executed if e­xpression = label1;  
  break;    
case 值2:  
  code to be executed if e­xpression = label2;  
  break;  
default:  
  code to be executed  
  if e­xpression is different   
  from both label1 and label2;  
}  

当变量中的值满足“值1”或者“值2”时,分别执行两个case下面的代码,然后千万记住每个“case”之间都要用“break;”分开。当变量中的值既不是“值1”也不是“值2”时就执行“default”下面的代码。

相信不少和我一样的php新人在学习PHP的时候和我一样,都郁闷过这个问题。@(at)这个记号到底是做什么的呢?


一次,下载别人的源码来看,看到无数@记号,开始以为是注释;后来发现@后面的语句也是会执行的。纳闷了,这个记号究竟是做什么的呢.....

随着学习的不断深入,总算是明白了。这个记号的作用有点类似于asp中的忽略错误"on error resume next "。他们的作用是一样的,当php解释器遇到@开头的语句时候,无论本行的语句是否执行成功,都会继续执行后续的语句,而且不会报错。但特别注意,@(at)记号只对当前行起作用哦。

 
 
希望关于@(at)的问题就在这打住把。
 

eg.下面这句话肯定报错

报错代码

 代码如下 复制代码

<?php  
$sql = mysql_connect(*);  
?>  

 

 

然而,如果我们加上@(at)记号,就不会报错了,而且继续执行。

不报错代码

 代码如下 复制代码

<?php   
@$sql = mysql_connect(*);  
echo "我一直在执行";  
?>  


继续执行下边的代码。

 代码如下 复制代码

 @$page=$_GET['page']?intval($_GET['page']):1;

这句是从URL中获取page关键字的值,比如"index.php?page=5",则$page就会取到5。

但是如果有error,比如"index.php"后没有page关键字了,如果去取$_GET['page']不存在就会报错,这时有@就可以忽视这个小错误了。

又比如:

 代码如下 复制代码

 $conn = mysqli_conncet("q","w","e","r");

这样会输入错误信息,关于连接数据库方面的。

 代码如下 复制代码

 @$conn = mysqli_conncet("q","w","e","r");

如果$conn前面加@的话就可以不让他输出错误信息了。

[!--infotagslink--]

相关文章

  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#读取文件所有行到数组的方法

    这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下...2020-06-25
  • 将二维数组转为一维数组的2种方法

    如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array(  array(    'id'=>'45',    'name'=>'jack'  ),  array(    'id'=>'34',    'name'=>'mary'  ),  array(    'id...2014-05-31
  • vue 数据(data)赋值问题的解决方案

    这篇文章主要介绍了vue 数据(data)赋值问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • php中数组写入文件方法

    在php中为我们提供了一个函数var_export 他可以直接将php代码入到一个文件中哦。 代码如下 复制代码 var_export($times,true);后面不加tru...2016-11-25
  • PHP 如何获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
  • java中String类型变量的赋值问题介绍

    下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
  • js有序数组的连接问题

    1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04
  • python 实现循环定义、赋值多个变量的操作

    这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • python 实现将Numpy数组保存为图像

    今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27