PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (594): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец

> Найдено сообщений: 8901
EuGen Отправлено: 24 Декабря, 2013 - 13:23:32 • Тема: Переименование ключей массива • Форум: Вопросы новичков

Ответов: 15
Просмотров: 1269
Нет, потому что type-hinting для скалярных типов данных не поддерживается, поэтому придётся проверять в функции. Кроме того, если массив пуст - возврат false - неочевидное решение. Корректнее возвратить пустой массив.
EuGen Отправлено: 24 Декабря, 2013 - 13:04:26 • Тема: Переименование ключей массива • Форум: Вопросы новичков

Ответов: 15
Просмотров: 1269
VenZell пишет:
if (!is_array($array)
|| empty($old_name)
|| empty($new_name)) {
return false;
}

Если устанавливать проверку, то, во-первых, нет смысла задавать пустые значения параметров по-умолчанию (функция, напротив, должна протестовать в таком случае против того, что они не переданы), а, во-вторых, проверять ключи через is_scalar - так как проверка пропустит что-нибудь наподобие объектов, что приведёт к неожиданным результатам. Кроме того, я бы вместо is_array добавил type-hinting для первого параметра.
EuGen Отправлено: 23 Декабря, 2013 - 16:09:36 • Тема: Вопрос к программистам • Форум: Прочее

Ответов: 37
Просмотров: 427
Panoptik
Задача о псевдослучайном генераторе в общем случае не связана с задачей про подарки на новый год.
EuGen Отправлено: 23 Декабря, 2013 - 14:37:00 • Тема: Вопрос к программистам • Форум: Прочее

Ответов: 37
Просмотров: 427
Panoptik
Последовательность на каждом шаге - то есть, при каждом вызове функции - будет меняться (в этом суть перемешивания). Но когда скрипт будет запущен заново, код выдаст те же последовательности (формально - последовательность последовательностей будет неизменна)

armancho7777777
Кольцо полностью удовлетворяет условию задачи, поскольку происходит перемешивание в начале, и каждый элемент будет связан со случайным (если я не прав, предложите алгоритм восстановления подарившего для того, кому известно лишь то, кому дарил он сам)
EuGen Отправлено: 23 Декабря, 2013 - 14:12:00 • Тема: Вопрос к программистам • Форум: Прочее

Ответов: 37
Просмотров: 427
armancho7777777
Тогда так. Случай 1, четыре участника:
1 -> 2 -> 3 -> 4 -> 1
Случай 2, пять участников:
1 -> 2 -> 3 -> 4 -> 5-> 1

То есть - в чём разница?
EuGen Отправлено: 23 Декабря, 2013 - 14:04:29 • Тема: Вопрос к программистам • Форум: Прочее

Ответов: 37
Просмотров: 427
armancho7777777 пишет:
А как же быть в том случае, если количество участников нечётное ?

Собственно, какая разница? Если это круговая связь, то последний замыкается на первого, таким образом, достаточно лишь обеспечить случайность выборки, что достигается через shuffle
EuGen Отправлено: 23 Декабря, 2013 - 10:50:37 • Тема: Вопрос к программистам • Форум: Прочее

Ответов: 37
Просмотров: 427
Примерно то же самое, только не очень ясно ограничение в 3
PHP:
скопировать код в буфер обмена
  1. function getPairs(array $data)
  2. {
  3.    if(!($end=count($data)))
  4.    {
  5.        return null;
  6.    }
  7.    shuffle($data);
  8.    $result = [[$data[0], $data[$end-1]]];
  9.    for($i=0; $i<$end-1; $i++)
  10.    {
  11.        $result[] = [$data[$i], $data[$i+1]];
  12.    }
  13.    return $result;
  14. }
EuGen Отправлено: 19 Декабря, 2013 - 16:38:54 • Тема: Создать массив • Форум: Напишите за меня, пожалуйста

Ответов: 7
Просмотров: 59
PHP:
скопировать код в буфер обмена
  1. $array = [1, 4, 3, 7, 5, 34, 23, 65, 12, 11, 32];
  2. $result= array_intersect_key($array, array_flip(array_rand($array, 5)));

?
EuGen Отправлено: 16 Декабря, 2013 - 16:54:34 • Тема: Поочередная замена значенний массива • Форум: Вопросы новичков

Ответов: 9
Просмотров: 342
PHP:
скопировать код в буфер обмена
  1. $str = 'тут текст %s, а тут число %i и снова текст %s';
  2. $arr1 = array('%s', '%i', '%s');
  3. $arr2 = array('трололо', 123, 'ололо');
  4. $i    = 0;
  5.  
  6. $result = array_reduce($arr1, function($current, $item) use ($arr2, &$i)
  7. {
  8.    return $current = preg_replace('/'.preg_quote($item).'/', $arr2[$i++], $current, 1);
  9. }, $str);
  10.  
  11. //var_dump($result);

?
EuGen Отправлено: 14 Декабря, 2013 - 13:41:06 • Тема: Многозадачность в PHP, при работе с сокетами • Форум: Работа с сетью

Ответов: 5
Просмотров: 2140
Здесь http://forum.php.su/topic.php?fo...35&topic=794 есть такой пример. Это достаточно давние наработки из какого-то моего проекта. Там есть все вводные, однако, к примеру, нет обработки отключения клиентов (и освобождения ресурсов, соответственно) - да и уровень абстракции в лучшем случае средний. Но ясное представление о том, как с этим всем работать, тот пример должен дать.
EuGen Отправлено: 12 Декабря, 2013 - 15:13:18 • Тема: Возможно ли составить такой запрос, если да то как? • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 45
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   a.id,
  3.   a.name,
  4.   SUM(b.`count`) AS sum_count
  5. FROM
  6.   t AS a
  7.     LEFT JOIN t AS b
  8.       ON a.id=b.parent
  9. WHERE a.parent=0
  10. GROUP BY a.id

?
EuGen Отправлено: 12 Декабря, 2013 - 11:18:09 • Тема: Подскажите правильное решение • Форум: Администрирование БД

Ответов: 8
Просмотров: 2324
Вертикальное шардирование может иметь смысл в ряде случаев. Например, если часты запросы, не требующие формирования полной строки данных (только малого объема имеющихся полей). Кроме того, например, MySQL хранит BLOB/TEXT поля в виде ссылок на их реальные данные на диске, так что отделение их в таблицу-партицию может оказаться полезным.

В основном, такое приносит пользу для больших таблиц, нагруженных запросами - при условии большого количества полей данных. Если приложение не будет работать под высокой нагрузкой, то это вряд ли даст ощутимый прирост производительности.
EuGen Отправлено: 11 Декабря, 2013 - 20:28:31 • Тема: Найти все комбинации из 3 чисел, сумма которых равна заданному числу • Форум: Вопросы новичков

Ответов: 3
Просмотров: 244
PHP:
скопировать код в буфер обмена
  1. function getCombinedSum($digits, $sum)
  2. {
  3.     if(!is_int($digits) || !is_int($sum) || $digits<1 || $sum<0)
  4.     {
  5.         throw new InvalidArgumentException('Invalid numeric format');
  6.     }
  7.     if($sum>9*$digits)
  8.     {
  9.         return [];
  10.     }
  11.     if($digits==1)
  12.     {
  13.         return [$sum];
  14.     }
  15.     $result = [];
  16.     for($digit=0; $digit<10 && $sum-$digit>0; $digit++)
  17.     {
  18.         foreach(getCombinedSum($digits-1, $sum-$digit) as $subsum)
  19.         {
  20.             $result[$digit.$subsum] = $digit.$subsum;
  21.             $result[$subsum.$digit] = $subsum.$digit;
  22.         }
  23.     }
  24.     return array_values($result);
  25. }


?
EuGen Отправлено: 10 Декабря, 2013 - 16:27:24 • Тема: Сайт российской версии «черной пятницы» не справился с потоком пользователей • Форум: Прочее

Ответов: 11
Просмотров: 88
502 для каких-то 3 млн.? Наиболее вероятное - рекламный ход (с другой стороны, в реалиях нашего рынка IT я уже ничему не удивлюсь).
EuGen Отправлено: 10 Декабря, 2013 - 11:01:03 • Тема: вывод чётных чисел в цикле • Форум: Вопросы новичков

Ответов: 7
Просмотров: 1001
rashitovich1955 пишет:
$x = 1;
do {
echo $x.'</br>';
} while ( $x++ < 5 );


PHP:
скопировать код в буфер обмена
  1. $x = 2;
  2. do
  3. {
  4.      echo $x.'</br>';
  5. } while ( ($x+=2) < 5 );

?

Страниц (594): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB