我是PHP的新手.我有两个阵列$array1,$array2大小相同.我一直在使用foreach循环迭代数组,如下所示:
foreach($array1 as $element1) {
//Do stuff with $element1
}
Run Code Online (Sandbox Code Playgroud)
和
foreach($array2 as $element2) {
//Do stuff with $element2
}
Run Code Online (Sandbox Code Playgroud)
但现在我想在同一时间通过两个阵列迭代,让我有机会获得这两个$element1和$element2在循环体.
我怎么做?
作为一名PHP程序员,我几乎都使用数组.我知道SPLFixedArray在某些情况下可能很有用,而且我知道PHP数组的内存效率不是很高,但我很少遇到他们很难做到我需要的实际情况.
这与我在Java工作时的情况形成对比,在那里我发现我完全理解我正在使用的数据结构以及每种数据结构的优缺点.如果有人建议我只使用LinkedHashMap来处理Java中的所有内容,那么他们就会被嘲笑出来.
那么我们怎样才能在PHP中摆脱这种快速而松散的工程?PHP数组的底层细节是什么?它通常被描述为"一个有序的地图",但这留下了大量的实施留给猜测.
PHP数组特别擅长哪些用例?有哪些看似直接的用例,PHP数组实际上非常糟糕?
例如,我假设有一些$arr = array('a','b','c','d','e');比有序哈希映射更好地处理密集整数键控数组(例如),但那么密集和稀疏之间的边界在哪里?一旦我引入了一个非有序密钥,数组的效率会大大降低$arr[10] = 'f';吗?怎么样$arr[1000000] = 'g';?我假设PHP没有填充中间的~100万个插槽,但是如果它是封面下的链表,那么可能$arr[rand()] = rand();反复调用在每个插入后必须进行一些重新排序?
任何探索PHP数组底层细节的答案都是受欢迎的,即使它没有解决我提出的具体问题.