Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较混合类型以建立数组中的规范顺序_Php_Arrays - Fatal编程技术网

Php 比较混合类型以建立数组中的规范顺序

Php 比较混合类型以建立数组中的规范顺序,php,arrays,Php,Arrays,这是一个好方法吗?如果不是,您推荐什么? 只要顺序是一致的,就不相关。我也知道这些值是不相等的 //We cannot know what types of data will be found here except that it is not a resource. $element_array = [ $any_type_but_resource1, $any_type_but_resource2, $any_type_but_resource3, $any_ty

这是一个好方法吗?如果不是,您推荐什么?

只要顺序是一致的,就不相关。我也知道这些值是不相等的

//We cannot know what types of data will be found here except that it is not a resource.
$element_array = [
   $any_type_but_resource1,
   $any_type_but_resource2,
   $any_type_but_resource3,
   $any_type_but_resource4,
   $any_type_but_resource5,
   $any_type_but_resource6
]
我的初始解决方案是:序列化值并使用strcmp(),但确保永远不能返回0

usort($element_array, static function($a, $b){
    return strcmp(serialize($a), serialize($b));  
 );

您可以在这里看到,我的sort有效,而sort()无效。是否有人有理由怀疑这并不总是有效?

仅使用
sort()
有任何问题?
sha1()
要求传递的参数为字符串(或可以自动转换为字符串的内容),因此这将不适用于未实现
\uu toString()
的数组或对象。如果这有帮助的话:。除非我误解了这个问题,
sort
在这种情况下不起作用。另外,我也不知道为什么需要测试0并返回1。如果您事先知道值会不同,那么比较它们的序列化无论如何都不会返回0,对吗?您的
If($result==0){return 1;}
代码可能会导致
usort
失败,因为在其操作过程中,它很可能会多次使用相同的值调用排序函数,但有时作为
$a,$b
,有时作为
$b,$a
。添加该代码将为相同的值提供不一致的结果。只要
sort()
有问题吗?
sha1()
要求传递的参数为字符串(或可以自动转换为字符串的内容),因此这将不适用于未实现
\u toString()
的数组或对象。如果有帮助的话:。除非我误解了这个问题,
sort
在这种情况下不起作用。另外,我也不知道为什么需要测试0并返回1。如果您事先知道值会不同,那么比较它们的序列化无论如何都不会返回0,对吗?您的
If($result==0){return 1;}
代码可能会导致
usort
失败,因为在其操作过程中,它很可能会多次使用相同的值调用排序函数,但有时作为
$a,$b
,有时作为
$b,$a
。添加该代码将为相同的值提供不一致的结果。