热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php不用eval实现字符串转数组

在一些项目中,我们经常需要将下面这种字符串转化为数组array(array(nameHome,single0,modelid11))这时候,可

在一些项目中,我们经常需要将下面这种字符串转化为数组

array(array('name'=>'Home','single'=>'0','modelid'=>'11'))

这时候,可以直接用eval来解决,可是一旦这段字符串出现错误,eval会导致程序停止运行。

针对这个问题,我最近写了一个方法,初步实现了String转Array的功能,代码如下

&$value){
$Array[]=array_encode($value);
}
}elseif(strpos($array[0],'=>')){
//键值对数组
foreach($array as $key => &$value){
//容错,不要分隔小数组中的键值符号
if(strpos($value,'array(')>0){
$value=str_replace("=>array","=>#array",$value);
$value=explode('=>#',$value);
}else{
$value=explode('=>',$value);
}
if(!(strpos($value[1],'\'')===0||strpos($value[1],'"')===0||strpos($value[1],'array')===0)){
if(strpos($value[1],'.')>0){
//双精度
$Array[preg_replace("/'|\"/","",$value[0])]=(double)$value[1];
}else{
//整形
$Array[preg_replace("/'|\"/","",$value[0])]=(int)$value[1];
}
}elseif(strpos($value[1],'array')===0){
//小数组
$Array[preg_replace("/'|\"/","",$value[0])]=array_encode($value[1]);
}else{
//字符串
$Array[preg_replace("/'|\"/","",$value[0])]=preg_replace("/'|\"/","",$value[1]);
}
}
}else{
//索引数组
foreach($array as $key =>&$value){
if(!(strpos($value,'\'')===0||strpos($value,'"')===0||strpos($value,'array')===0)){
if(strpos($value,'.')>0){
//双精度
$Array[]=(double)$value;
}else{
//整形
$Array[]=(int)$value;
}
}elseif(strpos($value,'array')===0){
//小数组
$Array[]=array_encode($value);
}else{
//字符串
$Array[]=preg_replace("/'|\"/","",$value);
}
}
}
return $Array;
}else{
return false;
}
}





推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 2022年7月20日:关键数据与市场动态分析
    2022年7月20日,本文对当日的关键数据和市场动态进行了深入分析。主要内容包括:1. 关键数据的解读与趋势分析;2. 市场动态的变化及其对投资策略的影响;3. 相关经济指标的评估。通过这些分析,帮助读者更好地理解当前市场环境,为决策提供参考。 ... [详细]
  • 利用PHP循环高效处理多条帖子表单数据 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 机器学习算法:SVM(支持向量机)
    SVM算法(SupportVectorMachine,支持向量机)的核心思想有2点:1、如果数据线性可分,那么基于最大间隔的方式来确定超平面,以确保全局最优, ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 在PHP中,为了更高效地打开和读取目录并列出其中的文件,可以使用一个自定义函数来返回查询目录下的文件和文件夹列表。该函数会将结果以数组形式返回,并明确区分每个条目是文件还是目录,从而提供更友好和实用的输出。此外,该函数还可以进一步扩展,支持递归查询子目录,以便更全面地获取目录结构信息。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
author-avatar
纸灰机forever
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有