|
|
|
| Не могу въехать, как засунуть диапазон в массив? Облазил весь форум не нашел ничего подобного. Нужно что-то типо:
$array1['20..50']="Первый массив";
$array2['51..70']="Второй массив";
Но так как написал я не работает, перепробовал всевозможные варианты, ничего не получается. | |
|
|
|
|
|
|
|
для: Mefisto84
(12.12.2007 в 17:29)
| | $array1(20,30,40,50) | |
|
|
|
|
|
|
|
для: sim5
(12.12.2007 в 17:37)
| | это диапазон? не работает так. | |
|
|
|
|
|
|
|
для: Mefisto84
(12.12.2007 в 17:54)
| | А что вы подразумеваете под диапазоном - array(50...100)? | |
|
|
|
|
|
|
|
для: Mefisto84
(12.12.2007 в 17:29)
| | Каждый элемент массива имеет свой индекс. | |
|
|
|
|
|
|
|
для: Mefisto84
(12.12.2007 в 17:29)
| | 1. цикл от - до
2. eval() | |
|
|
|
|
|
|
|
для: mihdan
(12.12.2007 в 22:16)
| | to sim5
под диапазоном я подразумеваю диапазон, то есть диапазон от 50 до 60 это - 50, 51, 52, 53...60.
Так что, нельзя что-ли просто без всяких фукнций и прочей дрибедени засунуть в массив диапазон? Мне кажется что я такое где-то видел, но не могу найти. То есть через простое объявление массива. | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 13:47)
| |
<?
$mass=array(10,11,12,13);
|
| |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 13:47)
| | Зачем Вам это? | |
|
|
|
|
|
|
|
для: kasmanaft
(13.12.2007 в 14:14)
| | а чтоб потом его распечатать попорядку ;)
а вообще - то
<?
$array1 = range(20, 50);
$array2 = range(51, 70);
?>
|
Как говорил мой преподаватель по матанализу Ростовцев В. - "Читайте лекции", на что я скажу - "Читайте мануал по РНР" | |
|
|
|
|
|
|
|
для: mihdan
(13.12.2007 в 14:16)
| | >> а чтоб потом его распечатать попорядку ;)
Ну это и без массива сделать можно :)
Не знаю зачем это может понадобится.. | |
|
|
|
|
|
|
|
для: kasmanaft
(13.12.2007 в 14:36)
| | опять все не то! :-)
нужна именно запись вида
$a[10..50]="первый массив";
Вопрос в том, что должно быть вместо .. в квадратных скобках? Или такая запись вообще невозможна? Мне казалось что я такое где-то встречал, может я ошибаюсь? | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:11)
| | Вы говорите на каком-то другом языке :))
Для чего это нужно? Может быть, какой пример приведите, как хотите потом с этим массивом работать.
Или это из других языков, где размерность массива нужно точно объявлять? В PHP делать этого не нужно.. | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:11)
| | Только не в РНР. | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:11)
| | может криво, но если я понял вашу идею
<?php
for ($i=20;$i<=70;$i++)
{
if ($i<=50)
$a[$i] = "первый массив";
else
$a[$i] = "второй массив";
}
|
зы тож голову ломаю зачем это может быть нужно | |
|
|
|
|
|
|
|
для: MIchail1982
(13.12.2007 в 18:21)
| | Ну зачем, ведь есть готовое, и уже показанное:
$array1 = range(50, 60);
Интересно бы знать зачем такой массив. | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 18:25)
| | циклом for конечно можно, но это не очень удобно. Зачем нужно? Ну вот к примеру, есть такие массивы:
$first[12..36]="Да";
$first[[45..58]="Нет";
$first[[69..130]="Может быть";
Затем мы получаем переменную $i, которая равна скажем 54.
Делаем запись вида $first[$i];
В итоге получаем конкретный ответ. Ну это так, лишь абстрактный пример. Так вот повторю вопрос, как мне забить вот эти диапазоны?
Можно сделать так
$first[12]="Да";
$first[13]="Да";
...
$first[46]="Нет";
но ведь это не выход, слишком много. Ведь можно как-то по другому. | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:32)
| | array[12..36] - это вы в Delphi могли видеть, в РНР такого нет. Если вы знаете крайние значения диапазона, зачем вам массив, чтобы узнать, входит ли полученное число в этот диапазон? | |
|
|
|
|
|
|
|
для: sim5
(13.12.2007 в 18:40)
| | как зачем? затем что так проще чем прогонять число через цикл for. | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:58)
| | Если нужно узнать, воходит ли 20 в диапазон чисел от 10 до 30, то обязательно потребуется цикл? | |
|
|
|
|
|
|
|
для: Mefisto84
(13.12.2007 в 18:11)
| | Тогда так
<?
$array1 = array_fill(10, 50, 'Да');
$array2 = array_fill(51, 70, 'Нет');
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(14.12.2007 в 00:22)
| | тоже не то, ладно, я понял что нет того чего я хочу. :-) Спасибо что попытались помочь, задача оказалось не решаемая простыми методами. увы. | |
|
|
|
|
|
|
|
для: Mefisto84
(14.12.2007 в 13:43)
| | просто вы городите непонятную конструкцию непонятно для чего :)
не проще ли
<?
if ($i>=0 and $i<=50) $otvet='Да';
elseif ($i>50 and $i<=100) $otvet='Нет';
|
| |
|
|
|
|
|
|
|
для: KPETuH
(14.12.2007 в 13:52)
| | to KPETuH
Прикольный у Вас ник! :-)
Конечно можно и так, но хотелось ведь что бы все было красиво. Все таки на много сложней конструкция получится. Вот к примеру, нужно для разного возраста пользователя выводить разные слова, типо 20 ЛЕТ, 21ГОД, 22 ГОДА...50 ЛЕТ, 51 ГОД, 52 ГОДА... И какого размера тогда получится конструкция? А так бы я просто подставлял переменную echo $array[$i]; и все было бы здоровско. :-) | |
|
|
|
|
|
|
|
для: Mefisto84
(14.12.2007 в 18:21)
| | 1 - это "год", от 2 по 4 это "года", все остальное "лет". Вот и все решение.
PS. Только в втором десятке исключение. | |
|
|
|
|
|
|
|
для: Mefisto84
(14.12.2007 в 18:21)
| |
<?
$i = 120;
$array1 = array_fill(10, 50, 'Да');
$array2 = array_fill(60, 70, 'Нет');
$array3 = array_fill(120, 10, 'Не знаю');
$array = array_merge($array1, $array2, $array3);
echo $array[$i];
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(14.12.2007 в 18:42)
| | Ну что Вы советуете? | |
|
|
|
|
|
|
|
для: kasmanaft
(14.12.2007 в 19:29)
| | То что просили то и написал, а что что-то не так? | |
|
|
|
|
|
|
|
для: mihdan
(15.12.2007 в 12:12)
| | to sim5
Нет, не решение, так как во всех десятках есть исключения: 31 год, 32 года, 35 лет и так далее.
to mihdan
Ну что-то похожее, но тоже не совсем. Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"? | |
|
|
|
|
|
|
|
для: Mefisto84
(15.12.2007 в 19:07)
| | Зачем вам десятки? Если возраст более 4 и менее 21 то это "лет" (это исключение из правил:)). В остальных случаях забирайте только младший разряд возраста и проверяйте по нему, ну неужели это сложно? | |
|
|
|
|
|
|
|
для: sim5
(15.12.2007 в 19:12)
| | а давайте все дружно попросим автора указать конкретную задачу? надоел весь этот огород.
зы это нужно не столько нам, сколько ему самому, чтобы понять че ему надо | |
|
|
|
|
|
|
|
для: mihdan
(15.12.2007 в 12:12)
| | >> То что просили то и написал, а что что-то не так?
Нужно объяснить, что так делать не нужно :-)
<?php
for ($i = 1; $i < 150; $i++) {
$age = (string)$i;
$len = strlen($age) ;
if ($len == 1 || $len == 2 && $age[0] !== "1" || $len > 2)
switch ($age[$len-1]) {
case '1' : $age .= ' год'; break;
case '2' : $age .= ' года'; break;
case '3' : $age .= ' года'; break;
case '4' : $age .= ' года'; break;
default : $age .= ' лет'; break;
}
else $age .= ' лет';
echo $age, "<br />";
}
?>
|
>>Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"?
Это из-за array_merge(), она сдвинула ключи... посмотрите с помощью print_r()
PS 60+70 = 130 ;-) | |
|
|
|
|
|
|
|
для: kasmanaft
(16.12.2007 в 08:06)
| | to udpn
А разве задача про возраст пользователя не конкретная?
kasmanaft
:-) Спасибо конечно.
Действительно 60+70=130 я и не обратил внимания.
Все это понятно, но просто не хотелось применять такие громоздкие конструкции, как говорил раньше - хотелось сделать все это проще. Но раз такой возможности нет, значит буду извращаться. :-) | |
|
|
|
|
|
|
|
для: Mefisto84
(16.12.2007 в 19:42)
| | с возрастами так правильнее работает
<?php
for ($i = 0; $i < 150; $i++)
{
switch($i)
{
case ($i % 100) < 21 && ($i % 100) > 4 :
echo $i . ' лет<br>';
break;
case ($i % 10) == 1:
echo $i . ' год<br>';
break;
case ($i % 10) == 0:
echo $i . ' лет<br>';
break;
case ($i % 10) < 5:
echo $i . ' года<br>';
break;
default:
echo $i . ' лет<br>';
break;
}
}
| вычислений только больше получается походу | |
|
|
|