此问题旨在作为有关在PHP中排序数组的问题的参考.很容易认为您的特定情况是独一无二的,值得一个新问题,但大多数实际上是本页面上其中一个解决方案的微小变化.
如果您的问题与此问题的副本相同,请仅在您能够解释为何与以下所有问题明显不同时才要求重新打开您的问题.
如何在PHP中对数组进行排序?
如何在PHP中对复杂数组进行排序?
如何在PHP中对对象数组进行排序?
有关使用PHP现有函数的实际答案,请参阅1.,有关排序算法的学术详细答案(PHP的函数实现以及您可能需要哪些非常复杂的案例),请参阅参考资料2.
我正在学习高级PHP标准并尝试实现新的有用方法.早些时候我__autoload只是用来逃避包括每页上的多个文件,但最近我看到了一个提示__autoload manual 
spl_autoload_register()为自动加载类提供了更灵活的替代方法.因此,不鼓励使用__autoload(),将来可能会弃用或删除.
但我真的无法弄清楚如何实施spl_autoload和spl_autoload_register
RecursiveIteratorIterator工作怎么样?
PHP手册没有任何记录或解释.IteratorIterator和之间有什么区别RecursiveIteratorIterator?
PHP 5引入了DirectoryIterator,而PHP 5.3引入了FileSystemIterator.
FileSystemIterator扩展DirectoryIterator,但文档没有说明它带来了什么额外的功能.
你能告诉之间的区别DirectoryIterator和FileSystemIterator?
我什么时候应该使用InvalidArgumentException和UnexpectedValueException?他们看起来和我一样.
请注意,一个扩展了LogicException,另一个扩展了RuntimeException,因此差异不应该是如此微妙的IMO.
使用:
for($i=1; $i<= 10000; ++$i) {
    $arrayOfNumbers[] = rand(1, 99999);
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么存在这样的速度差异:
array_map(array($maxHeap, 'insert'), $arrayOfNumbers);
# Avg Time: 0.92856907844543s
# against
foreach($arrayOfNumbers as $number) {
    $maxHeap->insert($number);
}
# Avg Time: 1.3148670101166
Run Code Online (Sandbox Code Playgroud)
$maxHeap 是一个对象 class MaxHeap extends SplMaxHeap
PHP 为无效密钥定义了两个SPL异常:
OutOfRangeException:请求非法索引时抛出异常.这表示应该在编译时检测到的错误.
OutOfBoundsException:如果值不是有效键,则抛出异常.这表示在编译时无法检测到的错误.
由于PHP不是编译语言,编译时和运行时之间的区别似乎很奇怪,因此我发现很难理解使用哪个例外.
目前我的理解是,一个人应该抛出... 
... OutOfRangeException如果关键是从根本上和本质上畸形,例如,如果一个数组作为重点过去了.
... OutOfBoundsException如果密钥通常没问题,但不在某些边界,例如,如果100通过但是50是最大密钥.
这种理解是否正确?
什么是多重的利益 spl_autoload_register
例:
spl_autoload_register('autoload_systems');
spl_autoload_register('autoload_thirdparties');
spl_autoload_register('autoload_services');
Run Code Online (Sandbox Code Playgroud)
VS:
用一个
spl_autoload_register('autoload'); 要么 __autoload();
然后在函数内部执行逻辑.
eg:
$ftp = new systems_ftp();
$services = new services_cron_email();
Run Code Online (Sandbox Code Playgroud) 在PHP 5.2中迭代数组时是否有可能"向前看"?例如,我经常使用foreach来操作数组中的数据:
foreach($array as $object) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)
但是我经常需要在通过数组时查看下一个元素.我知道我可以使用for循环并通过它的index($array[$i+1])引用下一个项目,但它不适用于关联数组.我的问题是否有任何优雅的解决方案,可能涉及SPL?
我正在研究代码来管理一系列独特的对象.这段代码的第一个原型使用了一个关联数组,基本上就像我一直这样做的那样.
但是,我也热衷于利用已经添加到更现代版本的PHP中的功能,例如SplObjectStorage来实现这一目的,部分原因在于学习体验,部分原因在于它必然会提供优势(我已经看到基准测试表明在很多情况下,SplObjectStorage可以比数组更快.
当前实现有一个关联数组,我在in_array中检查它是否在向对象添加新对象之前是否已经在数组中.
最大的问题,我可以SplObjectStorage看到的是,它似乎并没有(乍)支持键/值关联数组的行为,只能被视为一个索引数组.但是,PHP较新功能的文档不符合语言中较为成熟的部分的文档标准,我可能只是遗漏了一些东西.
我可以使用SplObjectStorage代替关联数组吗?如果是这样,我如何在添加新对象时定义键?更重要的是,与关联数组相比,SplObjectStorage的相对优势和劣势是什么?