PHP中相当于Python的enumerate()的函数是什么?

19 投票
8 回答
12053 浏览
提问于 2025-04-16 03:15

在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 

撰写回答