有时候为了达到一定目的,需要对二维数组进行排序,现分享一下其实现的方法。
复制代码 代码如下:
$arr=array (
'1' => array ( 'date' => '2011-08-18', 'num' => 5 ) ,
'2' => array ( 'date' => '2011-08-20', 'num' => 3 ) ,
'3' => array ( 'date' => '2011-08-17', 'num' => 10 )
) ; $result = sysSortArray($arr,'num');这样运行之后的效果为:
$arr=array (
'1' => array ( 'date' => '2011-08-18', 'num' => 3 ) ,
'2' => array ( 'date' => '2011-08-20', 'num' => 5 ) ,
'3' => array ( 'date' => '2011-08-17', 'num' => 10 )
) ;用到的函数:
/**
* Sort an two-dimension array by some level two items use array_multisort() function.
*
* sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2";……)
* @author lamp100
* @param array $ArrayData the array to sort.
* @param string $KeyName1 the first item to sort by.
* @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC")
* @param string $SortType1 the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
* @return array sorted array.
*/
function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
if(!is_array($ArrayData))
{
return $ArrayData;
}
// Get args number.
$ArgCount = func_num_args();
// Get keys to sort by and put them to SortRule array.
for($I = 1;$I {
$Arg = func_get_arg($I);
if(!eregi("SORT",$Arg))
{
$KeyNameList[] = $Arg;
$SortRule[] = '$'.$Arg;
}
else
{
$SortRule[] = $Arg;
}
}
// Get the values according to the keys and put them to array.
foreach($ArrayData AS $Key => $Info)
{
foreach($KeyNameList AS $KeyName)
{
${$KeyName}[$Key] = $Info[$KeyName];
}
}
// Create the eval string and eval it.
$EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
eval ($EvalString);
return $ArrayData;
}
另外:array_multisort 函数功能也很强大,详细可以参看PHP手册,里面讲的很详细。
我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
•SORT_ASC - 默认,按升序排列。(A-Z)
•SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:
•SORT_REGULAR - 默认。将每一项按常规顺序排列。
•SORT_NUMERIC - 将每一项按数字顺序排列。
•SORT_STRING - 将每一项按字母顺序排列。
语法:array_multisort(array1,sorting order,sorting type,array2,array3...)
•array1:必需。规定输入的数组。
•sorting order:可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。
•sorting type:可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
•array2:可选。规定输入的数组。
•array3:可选。规定输入的数组。
字符串键名将被保留,但是数字键将被重新索引,从 0 开始,并以 1 递增。可以在每个数组后设置排序顺序和排序类型。如果没有设置,每个数组参数会使用默认值。
下面是一个例子:
复制代码 代码如下:
$arr = '';
echo '二维数组如下:'.'
';
for($i=0; $i {
$arr[$i]['val'] = mt_rand(1, 100);
$arr[$i]['num'] = mt_rand(1, 100);
}
echo '
';<br> print_r($arr);<br> echo '';
echo '从二维数组中抽出键为val,单独成另一个数组:'.'
';
foreach ($arr as $key => $row)
{
$vals[$key] = $row['val'];
$nums[$key] = $row['num'];
}
echo '
';<br> print_r($vals);<br> echo '';
echo '对其进行排序:'.'
';
array_multisort($vals, SORT_ASC, $arr);
echo '
';<br> print_r($vals);<br> echo '';
?>
运行结果:
二维数组如下:
Array
(
[0] => Array
(
[val] => 46
[num] => 49
)
[1] => Array
(
[val] => 8
[num] => 24
)
[2] => Array
(
[val] => 37
[num] => 3
)
[3] => Array
(
[val] => 32
[num] => 35
)
[4] => Array
(
[val] => 19
[num] => 38
)
[5] => Array
(
[val] => 30
[num] => 37
)
)
从二维数组中抽出键为val,单独成另一个数组:
Array
(
[0] => 46
[1] => 8
[2] => 37
[3] => 32
[4] => 19
[5] => 30
)
对其进行排序:
Array
(
[0] => 8
[1] => 19
[2] => 30
[3] => 32
[4] => 37
[5] => 46
)
我们将得到一个按val升序排序的二维数组。

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

phpoffersvarioussessionsionsavehandlers:1)文件:默认,简单的ButMayBottLeneckonHigh-trafficsites.2)Memcached:高性能,Idealforsforspeed-Criticalapplications.3)REDIS:redis:similartomemememememcached,withddeddeddedpassistence.4)withddeddedpassistence.4)databases:gelifforcontrati forforcontrati,有用

PHP中的session是用于在服务器端保存用户数据以在多个请求之间保持状态的机制。具体来说,1)session通过session_start()函数启动,并通过$_SESSION超级全局数组存储和读取数据;2)session数据默认存储在服务器的临时文件中,但可通过数据库或内存存储优化;3)使用session可以实现用户登录状态跟踪和购物车管理等功能;4)需要注意session的安全传输和性能优化,以确保应用的安全性和效率。

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

绝对会话超时从会话创建时开始计时,闲置会话超时则从用户无操作时开始计时。绝对会话超时适用于需要严格控制会话生命周期的场景,如金融应用;闲置会话超时适合希望用户长时间保持会话活跃的应用,如社交媒体。

服务器会话失效可以通过以下步骤解决:1.检查服务器配置,确保会话设置正确。2.验证客户端cookies,确认浏览器支持并正确发送。3.检查会话存储服务,如Redis,确保其正常运行。4.审查应用代码,确保会话逻辑正确。通过这些步骤,可以有效诊断和修复会话问题,提升用户体验。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。