首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

注意:PHP7中十个需要避免的坑

说明引用为什么不好的一个例子是,PHP 内建了shuffle()和sort()。它们修改原始数组,而不是返回处理后的数组,这很不合逻辑。 5.不要在循环中执行查询 在循环中执行查询非常浪费。...它给你的系统施加不必要的压力,并且可能能够在循环外部更快获得相同结果。当我遇到需要这样的情况时,我通常会使用两个分离的查询来解决问题,我会使用它们来构建数据数组。...虽然get_post_meta() 会从数据库获取大量数据,如果你正在遍历某个特殊博文的元数据你可以在循环中使用它。这是因为当你第一次调用它的时候,WordPress实际上会获取所有元数据并缓存它们。...要确保使用类似filter_var()的内建函数检查适当的值,以及在处理数据库时转义(或预编译)。 WordPress 拥有一些函数来解决问题。详见文章校验、转义和过滤用户数据。...当你使用它们出色完成任务时,学习 Ruby、RoR、Android、iPhone 和 Windows Phone 应用开发如何?

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP:为什么使用数组?

    PHP 数组可能会让来自其他编程语言的开发者感到惊讶。这个非常方便的结构可以存储各种类型的元素,但它并不完美。简单介绍 PHP 数组在核心层面上,数组是一个映射。...它通常包含键和值,值可以是数组,让你能够构建树形和其他多维结构(如果有意义的话):$array = [ "foo" => "bar", "bar" => "foo",];$array2 =...如果你阅读文档,学习和使用都相当容易。PHP 数组的缺陷PHP 中到处都是数组。我是说,真的随处可见。它非常方便,因为你有大量内置的辅助工具和函数,可以进行各种排序、过滤和其他常见操作。...在我看来,这可能是使用这种结构的一个有效理由,特别是当你想要处理元素列表时。然而,这并不是魔法。最大的问题是你几乎可以将任何东西放入数组中,有时这样做会使安全使用和测试变得更加困难。...还有其他方法PHP 还有其他你可能还不知道的结构:生成器(generators):它们提供了几乎相同的功能(你可以在 foreach 循环中使用它们),但内存消耗更少,特别是如果不需要进行复杂操作(例如

    10100

    10个WordPress的query_posts语句使用技巧

    > 当然,使用哪种方法完全由个人习惯决定,不过我认为用数组更为方便,原因如下: 便于阅读,可以利用if语句更轻松地给数组添加条件,以动态生成查询一些查询参数(某些使用频率较低的参数,如分类参数和标签参数...钩子(hooks)和过滤器(filter) Query_posts函数一个鲜有人知的功能就是,你可以用它勾入已生成的查询。 这种行为可能有些冒险,不过实用价值很高。...但有时如果你想用数字型meta值来为一次查询排序,却发现meta值是字符串字段类型的(即,查询的顺序是1, 10, 11, 2, 23, 3,而你希望是按数字大小来排序:1,2,3,10,11,23)...文章回转 文章回转功能使用户可以运行“WordPress循环”后重设主循环,然后再重新运行主循环。 调用文章回转也很容易。 php rewind_posts(); ?> 那么要使用它你需要: <?...不显示某些文章(隐藏重复内容) 最后这个方法曾经在WebLogToolsCollection上出现过。 其原理是当用户在某一个页面上使用多个WordPress循环时,用代码阻止重复内容被链接。

    75690

    40+个对初学者非常有用的PHP技巧(二)

    不要担心PHP中有关如何优化在服务器和浏览器之间传输的数据。 使用apache mod_gzip/mod_deflate通过.htaccess文件压缩内容。...以上代码在大多数时候是正确的,除了应用程序使用多语言的情况。然后“Save”可以是很多不同的东西。那么你该如何再做比较?所以不能依靠提交按钮的值。相反,使用这个: ?...18.封装实用辅助函数到一个类中 所以,你必须在一个文件中有很多实用函数: ? 自由地在应用程序中使用函数。那么你或许想要将它们包装成一个类作为静态函数: ?...21.使用php过滤器验证数据 你是不是使用正则表达式来验证如电子邮件,IP地址等值?是的,每个人都是这样做的。现在,让我们试试一个不同的东西,那就是过滤器。...像上面这样做可能经常会由于内存限制而让脚本崩溃。对于小规模的变量它不会出现问题,但当处理大型数组时一定要对此加以避免。 考虑通过引用传递它们,或者将它们存储在一个类变量中: ?

    1.1K10

    php基本语法复习

    对象 对象是存储数据和有关如何处理数据的信息的数据类型 php中必须明确地声明对象 首先必须声明对象的类,使用class关键词,类是包含属性和方法的结构 在对象类中定义数据类型,然后在该类的实例中使用此数据类型...label1和label2时执行的代码 } 如果没有case为真,才使用default while循环 while只要条件为真,循环执行 do while先执行一次代码块,然后只要指定条件为真,则重复循环...counter){ code to be executed; } 第一个参数是初始化循环计数器的值 第二个参数是判断每个循环迭代,true继续,false结束 第三个参数是增加循环计数器的值...> php函数返回值 使用返回值,用return 当函数内部使用形参时,想要往外输出参数,则需要return,因为形参不是全局变量、 数组 数组能够在单独的变量名中存储一个或多个值 遍历索引函数 可以使用for循环遍历并输出索引数组的所有值 <?

    23210

    细说php入门学习

    变量命名规范 有数字,字母和下划线组成 不能以数字开头 支持中文., 但不推荐 变量名要有意义 可变变量 将一个变量的值,作为另一个变量名来使用 $name = '山鸡'; $山鸡 = '乌鸡'; $乌鸡...和dowhile的区别 while 先条件判断,在决定是否执行代码块 dowhile 先执行一次代码块,在条件判断,然后决定是否执行代码块 doWhile循环 do{ 代码块1 }while( 条件...return时,则立马返回到函数调用的地方,返回return值(提前结束) 返回值的类型 可以返回任意类型 如何返回多个值 将多个值存入一个数组中,最终返回数组几个....全局变量 不能在局部环境中使用 ​ ②. 局部变量 不能在全局环境中使用 ​ 特殊情况下: ​ ①..../U 忽略空白 X 匹配结果忽略空白 大小写匹配 i 匹配结果不区分大小写 单次匹配函数 preg_match( 正则, 对象, 结果) 结果是一个数组 返回每个匹配到的原子 返回值时1或者0

    3.7K20

    第四节(基本程序控制)

    ●如何使用简单的数组 ●如何使用for、while和do... while循环多次执行语句 ●如何嵌套程序控制语句 一.数组:基本概念: 在开始学习for语句之前,应该先了解一下数组的基本概念。...对于数组的第1个元素,偏移为0。 对于第2个元素,需要偏移1个元素,因此索引是1。 如上例所示,数组的每个元素都相当于一个普通的int类型变量,可以像使用int类型变量一样使用它们。...在前面的程序示例中使用过for语句。下面介绍for 语句是如何工作的。 for语句的结构如下: for (初值部分;循环条件;更新部分) 语句 初值部分、循环条件和更新部分都是C语言的表达式。...必须先初始化count或为其赋值,才能在for 语句中使用它。 接着对for语句中的循环条件(count while语句的意思是,如果nbr小于1或大于10,就打印一条消息提示用户输入一个有效的数字,然后获取该数字。 第28行和第29行打印储存在array数组中的值。

    21610

    PHP生成器(generator)和协程的实现方法详解

    所以在看了前段时间鸟哥(laruence)博客中对协程的讲解(参考链接:《PHP中使用协同程序实现合作多任务》)后,在我个人对本篇的理解上,针对那些比较难以理解的概念(包括我个人在理解这一概念的时候的难点...如果我们把数组看做一个对象,foreach 实际上在每一次迭代过程都会调用该对象的一个方法,让数组在自己内部进行一次变动(迭代),随后通过另一个方法取出当前数组对象的键和值。...一个简单的例子就是使用生成器来重新实现 range() 函数。 标准的 range() 函数需要在内存中生成一个数组包含每一个在它范围内的值,然后返回该数组, 结果就是会产生多个很大的数组。...当一个生成器被调用的时候,它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环),PHP 将会在每次需要值的时候调用生成器函数,并在产生一个值之后保存生成器的状态,这样它就可以在需要产生下一个值的时候恢复调用状态...以上在 《PHP中使用协同程序实现合作多任务》 有更为详尽的例子。本文不再赘述。

    79120

    深入理解PHP之数组遍历

    php arr[0]  = 2008; foreach (arr as key => 要完全了解清楚这个问题, 我想首先应该要大家了解PHP数组的内部实现结构……… PHP的数组 在PHP中, 数组是用一种...HASH结构(HashTable)来实现的, PHP使用了一些机制, 使得可以在O(1)的时间复杂度下实现数组的增删, 并同时支持线性遍历和随机访问....(arr as v) { //可以获取 } while (list(key, v) = each( 了解到我刚才介绍的知识, 那么这个问题也就很明朗了, 因为foreach会自动reset, 而while...这块不会reset, 所以在foreach结束以后, pInternalPointer指向数组最末端, while语句块当然访问不到了, 解决的办法就是在each之前, 先reset数组的内部指针....也就是说, 元素在线性遍历的时候是根据插入的先后顺序来遍历的, 这个特殊的设计使得在PHP中,当使用数字索引时, 元素的先后顺序是由添加的顺序决定的,而不是索引顺序.

    56910

    PHP- 控制流-循环语句-while(一)

    在循环体内,您可以编写任何有效的PHP代码,包括其他控制流语句,例如if语句和switch语句。示例下面是一个简单的示例,使用while循环打印从1到10的数字:使用while循环,每次循环打印$i的值,然后将$i的值增加1。当$i的值大于10时,循环结束。您还可以在循环中使用break和continue语句来提前结束循环或跳过一次循环。...下面是一个示例,使用break语句在循环中查找数组中的第一个负数:在上面的示例中,我们定义了一个数组$numbers,然后使用while循环遍历数组中的每个元素。如果找到第一个负数,则使用break语句提前结束循环。否则,将继续遍历数组中的元素。...>在上面的示例中,我们仍然使用while循环遍历数组中的每个元素。如果找到一个负数,则使用continue语句跳过当前循环中的剩余代码,直接开始下一次循环。否则,打印当前元素的值。

    72420

    WordPress自定义查询WP_Query使用方法大全

    ) - 需要显示的文章的id 'post__not_in' => array(1,2,3), //(数组) - 需要排除的文章的id //注意:不能在同一个查询里同时使用 'post__in' 和 'post...'trash' // - 回收站中的文章 (2.9和以后的版本可用). ), //注意:The 'any' 关键字可以用在 post_type 和 post_status 查询,但是不能在数组中使用...' => 10, //(整数) - n每页显示的文章数量 - 只在存档页面使用,在存档页面和搜索结果页面覆盖了 showposts 和 posts_per_page 参数 'nopaging' => false...//注意:使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 中使用 (编辑页面时有一个页面序号的字段) 和附件 ( 插入 / 上传媒体相册对话框中的数字), 但是不能对文章类型 'menu_order' 使用数字值 (默认都为 0).

    4.3K41

    WordPress自定义查询:WP_Query的使用

    ) - 需要显示的文章的id 'post__not_in' => array(1,2,3), //(数组) - 需要排除的文章的id //注意:不能在同一个查询里同时使用 'post__in' 和 'post...'trash' // - 回收站中的文章 (2.9和以后的版本可用). ), //注意:The 'any' 关键字可以用在 post_type 和 post_status 查询,但是不能在数组中使用...' => 10, //(整数) - n每页显示的文章数量 - 只在存档页面使用,在存档页面和搜索结果页面覆盖了 showposts 和 posts_per_page 参数 'nopaging' => false...//注意:使用 get_query_var('page'); 如果查询在设置为首页的页面模版中工作,查询参数 'page' 拥有文章分页或内容中使用 中使用 (编辑页面时有一个页面序号的字段) 和附件 ( 插入 / 上传媒体相册对话框中的数字), 但是不能对文章类型 'menu_order' 使用数字值 (默认都为 0).

    1.4K20

    PHP- 控制流-循环语句-while(二)

    嵌套循环在PHP中,您可以将一个while循环放在另一个while循环中,以创建嵌套循环。嵌套循环是一种常见的编程技巧,用于遍历多维数组或执行复杂的算法。...>在上面的示例中,我们使用嵌套循环,外部循环遍历从1到10的所有数字,内部循环计算每个数字的和。在内部循环中,我们定义了变量$j,并使用它来遍历从1到当前数字的所有数字。...然后将每个数字加到变量$sum中,最后打印$sum的值。总结在PHP中,while循环是一种常见的控制流语句,用于重复执行一段代码,直到指定的条件不再满足。...它的基本语法非常简单,您可以在循环体内编写任何有效的PHP代码,包括其他控制流语句。您还可以使用break和continue语句来提前结束循环或跳过一次循环。...如果需要,您可以将一个while循环放在另一个while循环中,以创建嵌套循环,用于遍历多维数组或执行复杂的算法。

    68610

    一道Google面试题:如何分解棘手问题(下)

    我所做的是把函数分成两部分。其中一个将保存最大的列表和以前扫描过的id,同时至少循环每个节点一次。另一个将从未扫描的根节点开始,执行深度优先遍历。...我花了一个晚上的大部分时间试图记住如何动态地更改循环中的索引,然后记得while(true)。自从我写了传统的循环以来,我已经完全忘记它了。 既然我有了武器,我就准备进攻。...回到循环的顶端,我本可以使用while(true),但我想要一个防止出现问题的方法,这在调试时很有用,因为无限循环是一件很麻烦的事情。 在那之后,我们将拼接节点。...我提出的主要解决方案是在Redux Observable样式中使用RxJS,但不使用Redux。 这实际上是我对这篇文章的挑战。...它有一个预定义的节点列表,我实时处理这个列表。这使得你可以通过点击(左)、(右)、(上)和(下)键在世界地图上移动,即使角度略有偏差。 我还为具有X和Y值的未知项列表编写了一个节点生成器。

    86430

    使用 performance 监控前端性能

    这个值的精度在未来的版本中可能会再次改善;浏览器开发者还在调查这些时间测定攻击和如何更好的缓解这些攻击。...确保使用相同的输入值运行代码。 多次运行该函数 假设你有一个函数,它的功是遍历一个数组,对数组的每个值进行一些计算,然后返回一个带有结果的数组。...如果我们第二次调用forEach测试,它的执行效果和for循环一样好。考虑到初始值较慢,在一些性能要求极高的项目,可能就不适合使用forEach。...限制的 CPU 我们在本地测试值是不能代表用户在浏览器使用的情况,因为 我们开发的电脑一般都会比大部分的用户好很多。 浏览器有一个特性可以限制CPU性能,我们通过设置可以更贴切一些真实情况。...总结 在本文中,我们看到了一些JavaScript API,我们可以使用它们来衡量性能,以及如何在真实的项目中使用它们。 对于简单的测量,我发现使用console.time更容易。

    1.6K20

    探索 PHP 8.3 中的新功能和增强功能

    简介 PHP 8.3 引入了许多新特性,同时也弃用了不少功能,以及其他变更。在本文中,我将尝试解释最新版本PHP(8.3)的新功能。...8.3 中有许多新功能,这使我的默认编码语言更加优雅和开发人员友好。 PHP可以轻松地使用本机PHP在桌面编程中使用。当然,还有许多其他工具可以在桌面编程中使用php,但我觉得原生PHP比它们更酷。...cURL 选项和常量的支持 支持匿名只读类 (anonymous read-only classes) 支持在数组中使用负数索引 (negative indices) 1....Fetching Class Constants Dynamically 在 8.3 之前,我们不能通过变量获取基于类的常量。当我们调用它们时,我们应该直接添加常量名称。...让我们看看如何使用当前版本的 php 获取常量: class StatusCodes { const OK = 200; const NOT_FOUND = 404; const

    48520

    探索 PHP 8.3 中的新功能和增强功能

    简介 PHP 8.3 引入了许多新特性,同时也弃用了不少功能,以及其他变更。在本文中,我将尝试解释最新版本PHP(8.3)的新功能。...8.3 中有许多新功能,这使我的默认编码语言更加优雅和开发人员友好。 PHP可以轻松地使用本机PHP在桌面编程中使用。当然,还有许多其他工具可以在桌面编程中使用php,但我觉得原生PHP比它们更酷。...选项和常量的支持 支持匿名只读类 (anonymous read-only classes) 支持在数组中使用负数索引 (negative indices) 1....Fetching Class Constants Dynamically 在 8.3 之前,我们不能通过变量获取基于类的常量。当我们调用它们时,我们应该直接添加常量名称。...让我们看看如何使用当前版本的 php 获取常量: class StatusCodes { const OK = 200; const NOT_FOUND = 404; const

    45940
    领券