好的,我需要将键保留在该数组中,而我只想从该数组中移出第一个元素。实际上,我知道执行此操作时,此数组的第一个键将始终为1:
// Sort it by 1st group and 1st layout.
ksort($disabled_sections);
foreach($disabled_sections as &$grouplayout)
ksort($grouplayout);
Run Code Online (Sandbox Code Playgroud)
基本上,我宁可不必对它进行ksort来获取键= 1的数组。老实说,我不是array_shift的忠实拥护者,它只需要很长时间的IMO。还有另一种方法。也许是一种提取找到$ disabled_sections [1]的整个数组的方法,而无需执行foreach并对其进行排序和array_shift。我只想将$ disabled [1]添加到另一个数组中,然后将其从该数组中完全删除。在保持两个数组键不变的情况下,它们保持原样。从技术上讲,这样做甚至可以:
$array = array();
$array = $disabled_sections[1];
Run Code Online (Sandbox Code Playgroud)
但是它需要将其从$ disabled_sections中删除。我可以使用这种方法吗?
$array = array();
$array = $disabled_sections[1];
$disabled_sections -= $disabled_sections[1];
Run Code Online (Sandbox Code Playgroud)
像上面的东西甚至可能吗?
谢谢。
尽管对此有一个公认的答案;万一其他人偶然发现了这种情况,一种不使用而不设置数组第一个元素的方法(无论其键或键的顺序)array_shift是:
reset($array); // sets internal array pointer to start
unset($array[key($array)]); // key() returns key of current array element
Run Code Online (Sandbox Code Playgroud)
尽管我相当确信这是array_shift内部的操作(所以我想这不会带来任何性能提升),但是要额外返回返回的值:
$element = reset($array); // also returns element
unset($array[key($array)]);
return $element;
Run Code Online (Sandbox Code Playgroud)
只是为了完成的缘故。
| 归档时间: |
|
| 查看次数: |
7313 次 |
| 最近记录: |