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

当key包含整数和字符串的组合时,php数组多排序未返回正确的结果

在PHP中,当数组的key包含整数和字符串的组合时,数组排序可能会出现问题。这是因为PHP在比较数组key时,会将字符串key转换为整数,然后进行比较。这可能导致意外的排序结果。

为了解决这个问题,可以使用自定义排序函数来对数组进行排序。以下是一个示例代码:

代码语言:txt
复制
<?php
function customSort($a, $b) {
    if (is_int($a) && is_string($b)) {
        return -1;
    } elseif (is_string($a) && is_int($b)) {
        return 1;
    } else {
        return strcmp($a, $b);
    }
}

$array = array(
    '1' => 'First',
    '2' => 'Second',
    'a' => 'Alpha',
    'b' => 'Beta'
);

uksort($array, 'customSort');

print_r($array);
?>

上述代码中,我们定义了一个自定义排序函数customSort,该函数首先判断两个key的类型,如果一个是整数而另一个是字符串,则按照整数优先的原则进行排序。如果两个key都是整数或都是字符串,则使用strcmp函数进行比较。

然后,我们使用uksort函数对数组进行排序,该函数使用用户自定义的比较函数对数组的key进行排序。

运行上述代码,将得到以下输出:

代码语言:txt
复制
Array
(
    [a] => Alpha
    [b] => Beta
    [1] => First
    [2] => Second
)

可以看到,数组按照预期的顺序进行了排序。

对于这个问题,腾讯云提供了一些相关的产品和服务,例如云服务器、云数据库、云存储等,可以满足不同场景下的需求。具体的产品介绍和链接地址可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

读书笔记《PHP与MySQL程序设计》一

s 字符串,显示为字符串 %u 整数,显示为无符号十进制 %x 整数,显示为小写十六进制 %X 整数,显示为大写十六进制 */ //sprintf语句,输与printf类似,但它将输出赋值给一个字符串...和continue   文件包含语句:include、include_once、require(与include的区别是在if为假,依然请求指定文件到当前位置)、require_once 第4章 函数...$arr';}//搜索关联数组键,返回布尔值 $key=array_search(1,$arr);if($key){echo "$key : $arr[$key]";}//搜索关联数组值,如果找到返回相应键...按键值对数组排序 krsort(array);//与ksort相同,排序相反 usort(array,callback);//根据自定义规则排序  5.9 合并、拆分、接合和分解数组 array_merge...array_diff();//求数组的差集 array_diff_assoc();//求关联数组的差集 5.10 其他有用的数组函数 array_rand(array[,num]);//返回一组随机的键

2.2K60

WordPress自定义查询:WP_Query的使用

( 'red', 'blue' ), //(整数/字符串/数组) - 自定义分类法分类条目 'include_children' => true, //(布尔值) - 是否包含自分类,默认为真...' => 1, //(整数) - 页面id,只返回子页面,只对有子页面的页面有效 'post__in' => array(1,2,3), //(数组) - 需要显示的文章的id 'post__not_in...' => 10, //(整数) - n每页显示的文章数量 - 只在存档页面使用,在存档页面和搜索结果页面覆盖了 showposts 和 posts_per_page 参数 'nopaging' => false...//'meta_value_num' - 根据数字meta值排序 (2.8和以后的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。...'meta_query' => array( //(数组) - 自定义字段参数 (3.1和以后的版本可用). array( 'key' => 'color', //(字符串) - 自定义字段的键

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

    ( 'red', 'blue' ), //(整数/字符串/数组) - 自定义分类法分类条目 'include_children' => true, //(布尔值) - 是否包含自分类,默认为真...' => 1, //(整数) - 页面id,只返回子页面,只对有子页面的页面有效 'post__in' => array(1,2,3), //(数组) - 需要显示的文章的id 'post__not_in...' => 10, //(整数) - n每页显示的文章数量 - 只在存档页面使用,在存档页面和搜索结果页面覆盖了 showposts 和 posts_per_page 参数 'nopaging' => false...//'meta_value_num' - 根据数字meta值排序 (2.8和以后的版本中可用). 同时需要注意'meta_key=keyname' 也要在查询中声明。...'meta_query' => array( //(数组) - 自定义字段参数 (3.1和以后的版本可用). array( 'key' => 'color', //(字符串) - 自定义字段的键

    4.3K41

    哈希表基础(含代码演示)

    二、哈希表的应用  1、普通方法查找key         要实现从包含n个整数的数组中擦护照整数key,以下为普通的方法。         通过循环进行逐一查询,效率低。...//从包含n个整数的数组中擦护照整数key //存在则返回1,不存在返回0 int find_key(int a[], int key) { int i =0; for(i = 0; i...3、 当处理指数,浮点数,字符串,数组,对象等元素时哈希表的应用         在遇到以上问题时需要使用哈希函数,我们可以将待存储的数据转换为表长范围内的整数,然后再使用数组下表进行访问。...sum % MAX_TABLE_LEN;//取余表长 }  三、哈希表使用中的问题         由于取余的原因,哈希函数可能将不同的数据映射在同一组下标上,这样会使产生冲突,无法正确计算。...四、具体题例 leetcode第349题、两个数组的交集 题目描述:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。

    15710

    python 基础内置函数表及简单介绍

    如果iterable为空,则返回False ascii(object) 返回一个包含对象的可打印表示的字符串 类似repr(); bin(x) 将整数转换为以...”0b”为前缀的二进制字符串 结果是有效的py表达式,如果x不是int对象,则必定义返回整数的_index_()方法 format(14,’#b’)显示‘0b’前缀>>>’0b1110’...divmod(a,b) 以两个(非复数)数字作为参数,并在使用整数除法时返回由它们的商和余数组成的一对数字。使用混合操作数类型时,适用二元算术运算符的规则。...oct(x) 将整数转换为以 “0o” 为前缀的八进制字符串。结果是一个有效的 Python 表达式。...对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。

    1.3K20

    海量数据处理:算法

    当它判断某元素不属于这个集合时,该元素一定不属于这个集合;当它判断某元素属于这个集合时,该元素不一定属于这个集合。...具体而言,查询结果由两种可能,即“不属于这个集合(绝对正确)”和”属于这个集合(可能错误)“。所以,Bloom filter适合应用在对于低错误率可以容忍的场合。...它的插入和查询时间都是常数,另外它不保存元素本身,具有良好的安全性。然而,这些优点都是以牺牲正确率为代价的。当插入的元素越多,错判“元素属于这个集合”的概率就越大。...是一种用于快速字符串检索的多叉树结构,其原理是利用字符串的公共前缀来降低时空开销,即以空间换时间,从而达到提高程序效率的目的。...函数来将结果汇总,保证所有映射键值对中的每一个共享相同的键组。

    94220

    php面试题目100及最佳答案

    require的速度比include快) 注意:包含文件不存在或者语法错误的时候require是致命的,include不是 18.http请求返回状态码 400 请求无效 401 未授权 403 请求被禁止...主 要是当阵列索引键的值无关疼痒时用来把 阵列排序。 assort() PHP 没有 assort() 函式,所以可能是 asort() 的笔误。...给定一个用逗号分隔一组值的字符串,以下哪个函数能在仅调用一次的情况下就 把每个独立的值放入一个新创建的数组?...[a-z0-9-]+)*$',$emailaddress) 72.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 /冒泡排序(数组排序) function bubble_sort($array...注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的; J、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引

    8.4K30

    PHP函数的实现原理及性能分析 .

    函数个数对性能的影响 测试方法 在以下三种环境下进行函数调用测试,分析结果:1.程序仅包含1个函数 2.程序包含100个函数 3.程序包含1000个函数。...测试中,我们选取字符串、数学、数组中各一个典型进行对比,这几个函数分别是字符串截取(substr)、10进制转2进制(decbin)、求最小值(min)和返回数组中的所以key(array_keys)。...Array_key_exists和isset两者都可以判断数组中某个key是否存在,看一下他们的性能 从图上可以看出,和array_key_exists相比,isset性能要高出很多,基本是前者的4倍左右...答案是否定的,php里字符串是用一个复合结构来描述,包括指向具体数据的指针和字符串长度(和c++中string类似),因此strlen就直接返回字符串长度了,是常数级别的操作。...Is_int:判断一个变量类型是否是整数型,php变量中专门有一个字段表征类型,因此直接判断这个类型即可,是一个绝对O(1)的操作 Is_numeric:判断一个变量是否是整数或数字字符串,也就是说除了整数型变量会返回

    59210

    Python 内建函数大全

    如果对象是一个类型或类对象,则该列表包含其属性的名称,并递归地显示其基础的属性。 否则,该列表包含对象的属性名称,其类属性的名称以及其类的基类的属性的递归。 结果列表按字母顺序排序。...如果提供的迭代器为空,则 default 参数指定要返回的对象。如果迭代器为空且未提供缺省值,则会引发 ValueError。 如果最大值包含多个 item,则该函数返回遇到的第一个 item。...如果提供的迭代器为空,则 default 参数指定要返回的对象。如果迭代器为空且未提供缺省值,则会引发 ValueError。 如果最小值包含多个 item,则该函数返回遇到的第一个 item。...oct(x) 将整数转换为以 “0o” 为前缀的八进制字符串。结果是一个有效的 Python 表达式。如果 x 不是 Python int 对象,则必须定义返回整数的 index() 方法。...对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。

    2K30

    Python内置函数详解【翻译自pyth

    生成一个类似于Python 2 中repr()返回的字符串。 bin(x) 将整数转换为以“0b”为前缀的二进制字符串。结果是一个有效的Python表达式。...如果对象是类型或者类对象,列表包含类的属性名,及它的基类的属性名。 否则,列表包含对象的属性名,它的类的属性名和类的基类的属性名。 返回的列表按字母顺序排序。...例如,如果参数是一个类,那么元类属性就不会出现在结果中。 divmod(a, b) 取两个(非复数)数字作为参数,并在使用整数除法时返回由商和余数组成的一对数字。...通过0以关闭缓冲(仅在二进制模式下允许),1选择行缓冲(仅在文本模式下可用)和整数当未给出buffers参数时,默认缓冲策略工作如下: 二进制文件以固定大小的块缓冲;使用启发式尝试确定底层器件的“块大小...zip(*iterables) 创建一个迭代器,聚合来自每个迭代器的元素。 返回一个由元组构成的迭代器,其中第i个元组包含来自每一组参数序列或可迭代量的第i元素。当最短输入可迭代被耗尽时,迭代器停止。

    1.5K20

    40个Java集合类面试题和答案

    Map包含key-value对,它提供抽取key或value列表集合的方法,但是它不适合“一组对象”规范。 6.Iterator是什么?...当我们通过传递key调用get方法时,它再次使用hashCode()来找到数组中的索引,然后使用equals()方法找出正确的Entry,然后返回它的值。下面的图片解释了详细内容。...集合是受map支持的,map的变化会在集合中反映出来,反之亦然。当一个迭代器正在遍历一个集合时,若map被修改了(除迭代器自身的移除操作以外),迭代器的结果会变为未定义。...当一个迭代器正在遍历一个集合时,若map被修改了(除迭代器自身的移除操作,以及对迭代器返回的entry进行setValue外),迭代器的结果会变为未定义。...它包含操作集合的多态算法,返回一个由指定集合支持的新集合和其它一些内容。这个类包含集合框架算法的方法,比如折半搜索、排序、混编和逆序等。

    66630

    40个Java集合面试问题和答案

    当我们通过传递key调用get方法时,它再次使用hashCode()来找到数组中的索引,然后使用equals()方法找出正确的Entry,然后返回它的值。下面的图片解释了详细内容。...集合是受map支持的,map的变化会在集合中反映出来,反之亦然。当一个迭代器正在遍历一个集合时,若map被修改了(除迭代器自身的移除操作以外),迭代器的结果会变为未定义。...当一个迭代器正在遍历一个集合时,若map被修改了(除迭代器自身的移除操作,以及对迭代器返回的entry进行setValue外),迭代器的结果会变为未定义。...它包含操作集合的多态算法,返回一个由指定集合支持的新集合和其它一些内容。这个类包含集合框架算法的方法,比如折半搜索、排序、混编和逆序等。 33.Comparable和Comparator接口是什么?...Comparable接口有compareTo(T OBJ)方法,它被排序方法所使用。我们应该重写这个方法,如果“this”对象比传递的对象参数更小、相等或更大时,它返回一个负整数、0或正整数。

    79730

    PHP常用函数大全

    debug_backtrace() cktrace() 函数 PHP Error 和 Logging 函数 scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。...natcasesort() 函数用不区分大小写的自然顺序算法对给定数组中的元素排序。 list() 函数用数组中的元素为一组变量赋值。...ksort() 函数按照键名对数组排序,为数组值保留原来的键。 krsort() 函数将数组按照键逆向排序,为数组值保留原来的键。 key() 函数返回数组内部指针当前指向元素的键名。...array_filter() 函数用回调函数过滤数组中的元素,如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组。...array() 创建数组,带有键和值。如果在规定数组时省略了键,则生成一个整数键,这个 key 从 0 开始,然后以 1 进行递增。

    16220

    爬虫+反爬虫+js代码混淆

    ,先输出右边表的所有数据,左边表匹配的输出,不匹配的为null 内连接 inner … join … on 必需同时符合左右表条件的内容才会输出,相当于普通多表查询 索引是对数据库表中一列或多列的值进行排序的一种结构...)0 (作为整数的0)0.0 (作为浮点数的0)“0” (作为字符串的0)NULLFALSEarray() (一个空数组)var; (一个声明了,但是没有值的变量) 如何在页面之间传递变量?...#所有者和所属组 什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?...,空间利用率低,当数据发生变化时索引消耗资源比较大 写出下面程序的运行结果。...> 写一个函数checkIp,使用正则表达式检测一个ipv4的IP是否正确,正确返回true,错误返回false。 <?

    12.3K20

    PHP常用函数大全

    debug_backtrace() cktrace() 函数 PHP Error 和 Logging 函数 scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。...natcasesort() 函数用不区分大小写的自然顺序算法对给定数组中的元素排序。 list() 函数用数组中的元素为一组变量赋值。...ksort() 函数按照键名对数组排序,为数组值保留原来的键。 krsort() 函数将数组按照键逆向排序,为数组值保留原来的键。 key() 函数返回数组内部指针当前指向元素的键名。...array_filter() 函数用回调函数过滤数组中的元素,如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组。...array() 创建数组,带有键和值。如果在规定数组时省略了键,则生成一个整数键,这个 key 从 0 开始,然后以 1 进行递增。 未经允许不得转载:肥猫博客 » PHP常用函数大全

    2.4K20

    Redis进阶不得不了解的内存优化细节

    可以使用type {key}命令查看对象所属类型,type命令返回的是值对象类型,键都是string类型。...一个ziplist可以包含多个entry(元素),每个entry保存具体的数据(整数或者字节数组),内部结构如下图所示。 ?...3) contents:整数数组,按从小到大顺序保存。 intset保存的整数类型根据长度划分,当保存的整数超出当前类型时,将会触发自动升级操作且升级后不再做回退。...升级操作将会导致重新申请内存空间,把原有数据按转换类型后拷贝到新数组。 开发提示:使用intset编码的集合时,尽量保持整数范围一致,如都在int-16范围内。...intset数据结构插入命令复杂度为O(n),查询命令为O(log(n)),由于整数占用空间非常小,所以在集合长度可控的基础上,写入命令执行速度也会非常快,因此当使用整数集合时尽量使用intset编码。

    9K50

    Python 基础知识

    字符串 可以用单引号和双引号表示,比如:'abc',"xyz",''或""本身只是一种表示方式,不是字符串的一部分 如果字符串内部既包含'又包含",可以用转义字符\来标识 如果字符串里面有很多字符都需要转义...list中可以包含list,形成多维数组,比如: >>> s = ['python', 'java', ['asp', 'php'], 'scheme'] >>> len(s) 4 要取出上述例子中的...-值(key-value)存储,具有极快的查找速度 和list比较,dict有以下几个特点: 查找和插入的速度极快,不会随着key的增加而变慢; 需要占用大量的内存,内存浪费多。...'Thomas',就会返回-1 -1 注意:返回None的时候Python的交互环境不显示结果。...dict的key必须是不可变对象,因为dict通过哈希算法来计算key的位置,要保证hash的正确性,作为key的对象就不能变 在Python中,字符串、整数等都是不可变的,可以作为key,但是list

    6810

    PHP7.0~PHP7.1~PHP7.2~PHP7.3~PHP7.4新特性

    它们扩充了PHP5中引入的其他类型:类名,接口,数组和 回调类型。 PHP标量包含: 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (`bool`)。...当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。 php function testReturn(): ?...PHP7.3新特性 1.Unicode 11支持 多字节字符串数据表已更新为Unicode 11。 2.长字符串的支持 多字节字符串函数现在正确支持大于2GB的字符串。...像mb_ereg()这样的匹配函数现在将使用它们的组号和名称返回指定的捕获,类似于PCRE: php mb_ereg('(?...> 复制代码 \k和\k "也可用于编号引用,也可用于大于9的组号。 PHP7.4新特性 1.类型属性 类属性现在支持类型声明。 <?

    15.3K21
    领券