Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3) / 19 сообщений из 19, страница 1 из 1
18.02.2014, 20:25
    #38565156
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
если переменная=1, чтоб вернула значение1
если переменная=3, чтоб вернула значение3
Оператор swich не подходит из-за своей неудобной конструкции. Функция ?(): также не очень удобная
...
Рейтинг: 0 / 0
18.02.2014, 21:48
    #38565232
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
...
Рейтинг: 0 / 0
18.02.2014, 23:31
    #38565300
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Понятно. Короче нет такого решения. Не существует такой функции(((
...
Рейтинг: 0 / 0
18.02.2014, 23:36
    #38565304
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159,

Действительно, нафига нужна такая функция, если задача легко решается при помощи массива :-)
...
Рейтинг: 0 / 0
19.02.2014, 23:37
    #38566888
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
vkle,

а это уже лишние движения. Кроме php есть другие удобные языки и там ой как спасает именно такая функция от лишнего кода и лучше понимается чем паять куда что попало в замен
...
Рейтинг: 0 / 0
20.02.2014, 05:46
    #38566957
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159,

Андрей159а это уже лишние движения
вот как раз choose() и есть лишние телодвижения. а массив это данные в чистом виде. просто вынимаешь значение и все. и нет зависимости от какихто левых функций.
...
Рейтинг: 0 / 0
20.02.2014, 08:53
    #38567022
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
r u,

это одно и тоже, просто обозначения разные.
...
Рейтинг: 0 / 0
21.02.2014, 22:48
    #38569207
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Получается нормальный оптимальный вариант будет если я использую массив, где остается просто внести значения на разных языках? Я вижу два действия. 1. Присвоить все значения, 2.Показать тот перевод индекс массива который выбран в настройках пользователя.
А если бы была такая функция, то я бы просто использован одно действие, где указан только индекс и набор слов на разных языках через запятую.
...
Рейтинг: 0 / 0
21.02.2014, 23:24
    #38569223
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159Получается нормальный оптимальный вариант будет если я использую массив, где остается просто внести значения на разных языках? Я вижу два действия. 1. Присвоить все значения, 2.Показать тот перевод индекс массива который выбран в настройках пользователя.
А если бы была такая функция, то я бы просто использован одно действие, где указан только индекс и набор слов на разных языках через запятую.

А?!

Что-то я не понял :) в чём проблема?
Код: php
1.
2.
3.
4.
function translate($val, $lang){
  global $texts;
  return $texts[$val][$lang];
}



где $texts - это массив со всеми фразами и переводами на требуемых языках, заданный в настройках


ну или Ваша choose... создайте её сами.. в чём проблема...?
Код: php
1.
2.
3.
function choose($index, $arr){
  return $arr[$index];
}


а пользовать её будете так:
Код: php
1.
choose($var, array($val1, $val2, $val3));



Вот Вам полный аналог требуемого результата. Однако... я бы всё же посоветовал, учитывая что это касается языков сайта, вынести все "здрасте" и "прочитайте о нас тут" в отдельный файл и все фразы прописать там в массив. Вот Вы сейчас сделаете так, как пишете, а потом на сайте ещё 2 языка решат добавить и чем это закончится? Да... беганием по всему сайту и добавлением переводов... А если всё будет лежать в отдельном файле, то просто зашли туда и дописали любое количество языков (добавив на каждое значение несколько переводов)... В первом случае это Вам (или следующему программисту после Вас) геммора на хороший денёк... А во втором - запустите в этот файл с переводами человека, который занимается переводом и пускай он там пишет, а Вы будете заниматься тем, чем должен заниматься программист.
...
Рейтинг: 0 / 0
21.02.2014, 23:25
    #38569224
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159я бы просто использован одно действие, где указан только индекс и набор слов на разных языках через запятую.Не знаю, как Вам, но остальные вряд ли посчитали бы это удобным. Недостатков - гора. В частности, "постепенная" локализация (добавление нового языка) довольно затруднена практически невозможна. Если над переводами работает несколько разных специалистов - возникнут проблемы со слиянием изменений в это самое "через запятую". Список можно продолжить.

Посмотрите, как делаются локализации в различных существующих системах. Обычно для каждой локализации имеется свой файл, где выполнено сопоставление идентификатора сообщения (или, иногда, англоязычного текста) с переводом. Файл может быть оформлен и как простой текстовый, и как класс, и как массив. При "постепенной" локализации в выводе сообщений обычно принимают участие два файла. Один из них имеет все сообщения, а второй (с требуемой локализацией) может содержать только части перевода. При отсутствии нужного сообщения в переводе выдается вариант из первого файла. Это как один из примеров, конечно.
...
Рейтинг: 0 / 0
22.02.2014, 13:49
    #38569398
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159,

choose оправдана в языках где массивы это нормальные массивы.

в скриптах никаких нормальных массивов нет, поэтому любой дятел или белка могут соорудить dictionary за 1 сек.

чтобы сделать так $arr=array('dyatel'=>'Дятел', 'belka'=>'Белка') и потом foreach($arr as $key=>$value) мне пришлось бы описывать структуру, потом заполнять эту структуру согласно структуре, потом добиваться к ней доступа и все такое.

Поэтому никакого чуза в пхп не будет. Смысла нет.
...
Рейтинг: 0 / 0
22.02.2014, 13:51
    #38569400
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Ну да, чузером в пхп является геттер.
...
Рейтинг: 0 / 0
22.02.2014, 13:54
    #38569402
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Еще чузер - переменная переменной. Я когда на вб описывал енумы постоянно мучился нормализационно. У меня в переменной book значение book. И так 16 раз подряд.

На пхп $book = 'книга'

а $$book == 'book'
...
Рейтинг: 0 / 0
22.02.2014, 14:02
    #38569408
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159А если бы была такая функция, то я бы просто использован одно действие, где указан только индекс и набор слов на разных языках через запятую.

http://ru2.php.net/func_get_args

без проверок:

$func = function(){

$arr = func_get_args();
$i = array_shift($arr); // первый аргумент считается индексом
return $arr[$i];

}

$res = $func(3, 'пусть', 'всегда', 'будет', 'солнце');
// res == солнце
...
Рейтинг: 0 / 0
24.02.2014, 22:11
    #38570967
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Спасибо за:
function choose($index, $arr){
return $arr[$index];
}

choose($var, array($val1, $val2, $val3));
...
Рейтинг: 0 / 0
25.02.2014, 05:32
    #38571090
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
маразм крепчал
...
Рейтинг: 0 / 0
25.02.2014, 14:33
    #38571632
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Код: php
1.
2.
3.
    function ifsetor(&$value, $default = null) {
        return isset($value) ? $value : $default;
    }
...
Рейтинг: 0 / 0
25.02.2014, 15:00
    #38571687
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
Андрей159Спасибо за:
function choose($index, $arr){
return $arr[$index];
}

choose($var, array($val1, $val2, $val3));

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
function choose($index, $arr){
    if ($index>=0 && $index<count($arr))
        return $arr[$index];
    else
        return null;
}

choose($var, array($val1, $val2, $val3));
...
Рейтинг: 0 / 0
25.02.2014, 15:19
    #38571730
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3)
автор return $arr[$index];
notice - udefined index
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нужна функиця аналогична как choose(переменная, значение1, значение2, значение 3) / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]