PHP中相当于Python的enumerate()的函数是什么?
在Python中,我可以这样写:
for i, val in enumerate(lst):
print i, val
我知道在PHP中做到这一点的唯一方法是:
for($i = 0; $i < count(lst); $i++){
echo "$i $val\n";
}
在PHP中有没有更简单的方法呢?
8 个回答
1
在Python中,enumerate函数有一个start
参数,可以用来定义枚举的起始值。
我在PHP中解决这个问题的方法是:
function enumerate(array $array, $start = 0)
{
$end = count($array) -1 + $start;
return array_combine(range($start, $end), $array);
}
var_dump(enumerate(['a', 'b', 'c'], 6000));
输出结果是:
array(3) {
[6000]=>
string(1) "a"
[6001]=>
string(1) "b"
[6002]=>
string(1) "c"
}
11
使用 foreach
:
foreach ($lst as $i => $val) {
echo $i, $val;
}
41
不要完全相信PHP的数组,它们就像Python中的字典。如果你想写出更安全的代码,可以考虑以下几点:
<?php
$lst = array('a', 'b', 'c');
// Removed a value to prove that keys are preserved
unset($lst[1]);
// So this wont work
foreach ($lst as $i => $val) {
echo "$i $val \n";
}
echo "\n";
// Use array_values to reset the keys instead
foreach (array_values($lst) as $i => $val) {
echo "$i $val \n";
}
?>
-
0 a
2 c
0 a
1 c