Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 循环遍历数据数组并打印';递增';信_Php - Fatal编程技术网

Php 循环遍历数据数组并打印';递增';信

Php 循环遍历数据数组并打印';递增';信,php,Php,我需要遍历一个数据数组,并为每个数组值打印一个“递增”字母。我知道我能做到: $array = array(11, 33, 44, 98, 1, 3, 2, 9, 66, 21, 45); // array to loop through $letters = array('a', 'b', 'c', ...); // array of letters to access $i = 0; foreach($array as $value) { echo $letters[$i++] .

我需要遍历一个数据数组,并为每个数组值打印一个“递增”字母。我知道我能做到:

$array = array(11, 33, 44, 98, 1, 3, 2, 9, 66, 21, 45); // array to loop through
$letters = array('a', 'b', 'c', ...); // array of letters to access
$i = 0;
foreach($array as $value) {
    echo $letters[$i++] . " - $value";
}
似乎应该有比创建字母表数组更好的方法。有什么建议吗

注意-我的循环永远不会通过整个字母表,因此我不担心字母用完。

使用以下功能:

$letters = range('a', 'z');
print_r($letters);
您还可以使用
foreach
循环分别处理每个字母:

foreach($letters as $letter) {
    echo $letter . '<br />';
}
foreach($letter作为$letter){
回显$letter.“
”; }
for($counter=ord('a');$counter你是不是想买这样的东西

foreach(range('a','z') as $value)
{
  echo $value . ","
}

如果使用foreach循环的
$key=>$value
功能,则不必使用迭代器:

$letters = range('a', 'z');

foreach($letters as $key => $value)
{
    echo $key . '=>' . $value;
}
你甚至可以简单地做到:

foreach(range('a', 'z') as $key => $value)
{
    echo $key . '=>' . $value;
}
作为演示(我知道您已经接受了答案),但有时知道您还可以增加字符变量是很有用的:

$var = 'a';
do {
   echo $var++.'<br />';
} while ($var != 'aa');
$var='a';
做{
echo$var++.
; }而($var!=“aa”);
我知道你已经接受并回答了,但我相信这就是你想要的:

增量运算符的简单用法:

<?php
$array = array("cat","car","far","tar","tag");

  // No need for an array, just set $letter to "a", then increment it.
$letter = "a";

foreach($array as $value) {
      // Print your letter, then increment it.
    echo $letter++ . " - $value\n";
}
?>

与创建数组相比,使用此方法的最大优点是您不必担心字母用完,因为您只需移动到双字母:。

为了好玩而添加

$array = array(11, 33, 44, 98, 1, 3, 2, 9, 66, 21, 45);
$new_array = array_combine(array_slice(range('a','z'),0,count($array)),$array);
    foreach($new_array as $k=>$v){
        echo "$k - $v";
    }

蜡笔提到的范围函数表明了一种更好的方法。代码示例更新为reflect.eww。有比在两个看起来神奇的数字之间循环更干净的方法。+1是迄今为止唯一不需要一次性字母数组的答案。更好。范围('a','z'))解决方案仍然让人感觉更优雅,但这至少可以避免创建额外的数组。不过,回音需要更改,因为$value是由foreach循环设置的,而且数字也需要以某种方式进行回音。谢谢大家的回答。有一件事我似乎没有说得很清楚:我没有循环字母,我没有循环hr通过不同的数据数组。我只需要在浏览这些数据时增加字母。我只是在为将来来访的任何人解释时注意到这一点。你们都为我提供了我需要的答案。再次感谢。斯科特,这一评论真的应该作为更新折叠到原始问题中,在那里它会更加突出。@George:我认为从我提供的代码示例和原始描述中可以清楚地看出。显然我错了:)我对问题进行了一些编辑,以使其更清楚。我现在发现我的问题标题非常误导。我认为问题的文本描述了我想要的,但标题描述了一个不同的问题——每个人都回答的问题。我改变了标题以反映我真正的问题。我知道你的意思,但我们需要利用人脑的能力和所有这些。第一次阅读时,我错过了
foreach
中的
$array
。然后,有一个问题是它是否是一个打字错误。正如你提到的,标题和描述有些不同。无论哪种方式,我的观点都只是将该评论放在问题主体中,因为在评论部分很容易忽略。如果它对问题足够重要,不妨编辑它,而不用担心更改问题。或者只是将其添加为附录,而不重写原文。我预见到你的未来会有一个民粹主义徽章。不客气:)我接受了另一个答案,因为你的循环不适合我的问题。可能是
foreach($theLetter的字母){
使用起来稍微简单一点,除非你出于任何原因需要钥匙。@Peter:也许吧,但我实际上是在一个完全不同的数组中循环,而不是字母数组。@crayon我不认为这是问题所在。相反,他的答案更成熟了一点。(当然,只是稍微多一点。)我不知道OP是否意识到,但最初在答案中提供的
foreach
循环将在
$key
中为他提供一个计数器,他不需要手动递增,因为循环正在处理一个数字数组。
<?php
$array = array("cat","car","far","tar","tag");

  // No need for an array, just set $letter to "a", then increment it.
$letter = "a";

foreach($array as $value) {
      // Print your letter, then increment it.
    echo $letter++ . " - $value\n";
}
?>
$array = array(11, 33, 44, 98, 1, 3, 2, 9, 66, 21, 45);
$new_array = array_combine(array_slice(range('a','z'),0,count($array)),$array);
    foreach($new_array as $k=>$v){
        echo "$k - $v";
    }