PHP 数组中随机抽取一些元素

 更新时间:2016年11月25日 15:03  点击:1650
随机抽取一些元素这个功能实现方法很简单,只要使用array_rand与range就可以实现了,如果随便抽取一个元素就直接使用mt_rand然后长成随机数长度不超过数组长度即可。

下面我先给大家提供几种方法,供大家参考。


方法-:

 代码如下 复制代码

$arr = range(1,10,1);
   
$newarr = array_rand($arr,6);    //随机获取6个数组中的键
   
$newArr = array_flip($newarr);   //键与值互换
   
$arr3 = array_diff_key($arr,$newArr); //取键相同的
   
$arr1 = array_diff_key($arr,$arr3);  //取键相同的
   
print_r($arr1);

结果: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [5] => 6 [9] => 10 )

方法二:

 代码如下 复制代码

$arr = range(1,10,1);
   
$newarr = array_rand($arr,6);    //随机获取6个数组中的键
   
$ArrNew = array();
   
foreach($newarr as $k=>$v)

   $ArrNew[$v] = $arr[$v];    
}
   
print_r($ArrNew);

结果:Array ( [1] => 2 [2] => 3 [3] => 4 [4] => 5 [6] => 7 [7] => 8 )

方法三:这种方法没有保留键名,供大家参考一下.

 代码如下 复制代码

$arr = range(1,10,1);
  
shuffle($arr);   //打乱数组
  
$newarr = array_splice($arr,0,6);
  
print_r($newarr);

结果:Array ( [0] => 7 [1] => 4 [2] => 2 [3] => 10 [4] => 9 [5] => 6 )

利用php来验证日期格式我们可以使用checkdate()函数与正则表达式来验证,下面我一一给各位同学介绍了我在验证日期格式一些过程,最终得出最简单办法。

1.使用正则验证日期时间格式
主要使用ereg、preg_match等php函数。
有个非常简单的,

 代码如下 复制代码
$dateTime=”2010-6-4 00:00:00″;
if(preg_match(“/^d{4}-d{2}-d{2} d{2}:d{2}:d{2}$/s”,$dateTime))
{
echo “Yes”;
}else{
echo “No”;
}

可是这个正则只验证了数字,并未对边界值进行验证,并不全面,于是有人写了这个正则

 代码如下 复制代码

regex = “^((d{2}(([02468][048])|([13579][26]))[-/s]?((((0?[13578]
)|(1[02]))[-/s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[4
69])|(11))[-/s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/
s]?((0?[1-9])|([1-2][0-9])))))|(d{2}(([02468][1235679])|([1
3579][01345789]))[-/s]?((((0?[13578])|(1[02]))[-/s]?((
0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[-/s]?((
0?[1-9])|([1-2][0-9])|(30)))|(0?2[-/s]?((0?[1-9])|(1[0-9]
)|(2[0-8])))))) “; //日期部分
regex += “(s(((0?[0-9])|([1-2][0-3])):([0-5]?[0-9])((s)|(:([0-5]?[0-9])))))?$”; //时间部分

丫的这简直就是神的作品。
于是我不得不放弃使用正则来验证时间格式合法性。

2.对时间字符串进行拆解分别验证日期时间格式。
主要用到checkdate等php函数。
这个方法很不错,验证也准确,可是代码写起来麻烦,需要将日期和时间分别拆解,日期使用checkdate($k[1],$k[2],$k[0])验证,时间又需要拆解逐个检查。

其实可以综合了上述两种方法来使用,操作也方便得多。
1.首先使用正则验证是否为“2011-11-07 12:30:55”这种格式。

 代码如下 复制代码
preg_match(“/^d{4}-d{2}-d{2} d{2}:d{2}:d{2}$/s”,$dateTime)

就可以了
2.然后使用strtotime()函数判断验证,传入日期字符串即可。
strtotime()函数默认返回指定日期时间字符串对应的UNIX时间戳。
strtotime()函数有个特点,就是如果传入日期字符串格式错误的话会返回false,而且支持各种的日期格式,非常方便。

在mysql中如果我们想利用PHP创建数据库和表方法很简单,我们可以直接使用mysql_query()来执行mysql的创建表命令,CREATE DATABASE database_name即可。

具体如下

为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令。

例子

在下面的例子中,我们创建了一个名为 “my_db” 的数据库:

 代码如下 复制代码

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
if (mysql_query("CREATE DATABASE my_db",$con))
 {
 echo "Database created";
 }
else
 {
 echo "Error creating database: " . mysql_error();
 }
mysql_close($con);
?>

创建表

CREATE TABLE 用于在 MySQL 中创建数据库表。

例子

下面的例子展示了如何创建一个名为 “Persons” 的表,此表有三列。列名是 “FirstName”, “LastName” 以及 “Age”:

 

 代码如下 复制代码
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
// Create database
if (mysql_query("CREATE DATABASE my_db",$con))
 {
 echo "Database created";
 }
else
 {
 echo "Error creating database: " . mysql_error();
 }
// Create table in my_db database
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE Persons
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);
mysql_close($con);
?>

向数据库表插入数据

您还可以规定希望在其中插入数据的列:

INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)

例子

在前面的章节,我们创建了一个名为 “Persons” 的表,有三个列:”Firstname”, “Lastname” 以及 “Age”。我们将在本例中使用同样的表。下面的例子向 “Persons” 表添加了两个新记录:

 代码如下 复制代码
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);
?>

--------------------------------------------------------------------------------
把来自表单的数据插入数据库

 代码如下 复制代码

<html>
<body>
<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 “insert.php”。”insert.php” 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中。

下面是 “insert.php” 页面的代码:

 

 代码如下 复制代码
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("my_db", $con);
$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "1 record added";
mysql_close($con)
?>
在php中如果要判断浏览器类型操作方法很简单的,我们只要利用全局变量HTTP_USER_AGENT就可以获取用户浏览器信息,这样我们就可以利用正则加以判断类型或浏览器版本了。

PHP如何判断浏览器类型及浏览器语言因为浏览器在和服务器连接时候都会先发送一些包含自己信息的内容(浏览器类型、语言)。

这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型)和_SERVER["HTTP_ACCEPT_LANGUAGE"](浏览器语言)。
我们所要做的就是把这些内容读出来,然后用strpos或者preg_match函数来对比就可以了。
判断浏览器类型:

 代码如下 复制代码

 <?php echo $_SERVER["HTTP_USER_AGENT"];?>

先给出PHP代码部分,有些不是很全,需要的朋友自己依葫芦画瓢自行添加去。(下面这个代码有个小错误,请将文章看完并自行修改)

 代码如下 复制代码

<?php
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 9.0"))
echo "Internet Explorer 9.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))
echo "Internet Explorer 8.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))
echo "Internet Explorer 7.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))
echo "Internet Explorer 6.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox"))
echo "Firefox";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))
echo "Chrome";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))
echo "Safari";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))
echo "Opera";
else echo $_SERVER["HTTP_USER_AGENT"];
?>

打开opera浏览器,可以看到它的页面请求头信息如下:

Opera/9.80 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.10.229 Version/11.61
但是 strpos($_SERVER["HTTP_USER_AGENT"],"Opera") 返回的值始终是“0”

解决方法比较也比较简单,

 代码如下 复制代码

else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))

替换成

else if(strpos($_SERVER["HTTP_USER_AGENT"],"pera"))

下面再补一个更强的可判断是浏览器用户还是seo/seo.html" target="_blank">搜索引擎

 代码如下 复制代码


function my_get_browser(){
 if(empty($_SERVER['HTTP_USER_AGENT'])){
  return '命令行,机器人来了!';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 9.0')){
  return 'Internet Explorer 9.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0')){
  return 'Internet Explorer 8.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0')){
  return 'Internet Explorer 7.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')){
  return 'Internet Explorer 6.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')){
  return 'Firefox';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Chrome')){
  return 'Chrome';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Safari')){
  return 'Safari';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Opera')){
  return 'Opera';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'360SE')){
  return '360SE';
 }
}

在php中大括号{}我们常用的是类数组或条件判断了,但是在变量中用这种写法{$test}是什么使用呢,下面我来给大家介绍。

php输出变量加大括号,这是什么写法?看下面一段代码:

 代码如下 复制代码

<?php

header("Content-Type:text/html; charset=utf-8");

$test="1变量1";

//echo "前面有字符串aa ".$test." bb后面字符串";

echo "前面有字符串aa {$test} bb后面字符串";

?>


可以看出php输出变量加大括号同使用.运算符输出变量字符串效果是一样,总结出下面3点以帮助理解php输出变量加大括号{}的作用:

1. 表示{}里面的是一个变量  ,执行时按照变量来处理;
2. 在字符串中引用变量使用的特殊包括方式,这样就可以不使用.运算符,从而减少代码的输入量了;
3. 防止变量名和后面的字符串连在一起。

附:

字符串变量中大括号{}的作用:

PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号对应的字符。

例如:

 代码如下 复制代码

$str = 'hello';
echo $str{0}; // 输出为 h
echo $str{1}; // 输出为 e

如果要检查某个字符串是否满足多少长度,可以考虑用这种大括号{} 加 isset 的方式替代 strlen 函数,因为 isset 是语言结构,strlen 是函数,所以使用 isset 比使用 strlen 效率更高。
比如判断一个字符串的长度是否小于 5:

 代码如下 复制代码

if ( !isset ( $str{5} ) ) 就比 if ( strlen ( $str ) < 5 ) 好。

[!--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
  • js屏蔽F12审查元素,禁止修改页面代码等实现代码

    有时候我们需要屏蔽客户端的F12,以防菜鸟也可以随意修改我们的代码,也处于源码的保护等操作,这里就为大家分享一下常见的代码...2020-10-03
  • C# 拷贝数组的几种方法(总结)

    下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 超简洁java实现双色球若干注随机号码生成(实例代码)

    这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
  • jQuery实现HTML元素隐藏和显示

    这篇文章主要为大家详细介绍了jQuery实现HTML元素隐藏和显示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-19
  • PHP 二维数组根据某个字段排序的具体实现

    本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • 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
  • 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
  • C++随机点名生成器实例代码(老师们的福音!)

    这篇文章主要给大家介绍了关于C++随机点名生成器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • js有序数组的连接问题

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