首页
学习
活动
专区
工具
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.2K41

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

    二、哈希表应用  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 ,返回 它们交集 。输出结果每个元素一定是 唯一 

    14310

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

    90520

    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.3K30

    Python 内建函数大全

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

    2K30

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

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

    58210

    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外),迭代器结果会变为未定义。...它包含操作集合多态算法,返回一个由指定集合支持新集合其它一些内容。这个类包含集合框架算法方法,比如折半搜索、排序、混编逆序等。

    65630

    40个Java集合面试问题答案

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

    79530

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

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

    12.3K20

    PHP常用函数大全

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

    16120

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

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

    8.9K50

    PHP常用函数大全

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

    2.4K20

    Python 基础知识

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

    6710

    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.1K21
    领券