Ответ 1
$letters = range('a','z');
Мне нужно пройти через массив данных и напечатать букву "incrementing" для каждого значения массива. Я знаю, что могу это сделать:
$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');
Используйте функцию range
:
$letters = range('a', 'z');
print_r($letters);
Вы также можете использовать цикл foreach
для каждой буквы отдельно:
foreach($letters as $letter) {
echo $letter . '<br />';
}
Как демонстрация (я знаю, что вы уже приняли ответ), но иногда полезно знать, что вы также можете увеличивать символьные переменные:
$var = 'a';
do {
echo $var++.'<br />';
} while ($var != 'aa');
for ($counter = ord('a'); $counter <= ord('z'); $counter += 1) {
echo chr($counter) . " - $counter";
}
Вы имели в виду что-то похожее на это?
foreach(range('a','z') as $value)
{
echo $value . ","
}
Я понимаю, что вы уже приняли и ответили, но я считаю, что это то, что вы ищете:
Простое использование оператора инкремента:
<?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";
}
?>
Посмотрите на него в прямом эфире.
Большое преимущество использования этого метода над созданием массива состоит в том, что вам не нужно беспокоиться о том, чтобы закончиться буквы, поскольку вы просто переходите к двойным буквам: как это.
Вам не нужно иметь итератор, если вы используете функциональность $key => $value
цикла foreach:
$letters = range('a', 'z');
foreach($letters as $key => $value)
{
echo $key . '=>' . $value;
}
Вы даже можете просто сделать:
foreach(range('a', 'z') as $key => $value)
{
echo $key . '=>' . $value;
}
Добавить для удовольствия...
$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";
}