PHP.SU

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

Страниц (1): [1]

> Найдено сообщений: 15
Няшик Отправлено: 11 Апреля, 2016 - 14:45:02 • Тема: Что означает выражение "$value= $value ?? 0;"? • Форум: Вопросы новичков

Ответов: 14
Просмотров: 638
[quote=armancho7777777][/quote]

А кто веляет??? Ты привёл пример не эквивалентному второму. Тут я и написал, почему не ISSET


И вот тебе пример в реальной работе с твоим `??` и `?:`
http://sandbox[dot]onlinephpfunction[dot][dot][dot]c666c99cc0f949a8
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 'Test';
  3.  
  4. $r[] = $var ?? 'Эх!'; // Test
  5. $r[] = !$var ?? 'Эх!'; // FALSE
  6.  
  7. // Иии
  8. $r[] = $var ?: 'Эх!'; // Test
  9. $r[] = !$var ?: 'Эх!'; // 'Эх!'
  10.  
  11.  


Я изначально думал что она идентичная, но когда попробовал в работе, выяснилась что это "ЭХ!" никогда не будет получена


Следовательно ?? - НАХЕР НЕ НУЖНА если мне надо, я буду использовать всегда ?: И из примера выше, понятно почему. И вам советую. И советую ТС
Няшик Отправлено: 11 Апреля, 2016 - 13:44:17 • Тема: Что означает выражение "$value= $value ?? 0;"? • Форум: Вопросы новичков

Ответов: 14
Просмотров: 638
armancho7777777 пишет:
Няшик, ещё раз:
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 'foo';
  3. $value= $var ?? 'bar'; // foo (string)
  4. $value= isset($var) ?: 'bar'; // true (bool)


А чего это мы isset не написали для первой переменной ???

ВО ПЕРВЫХ
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 'foo';
  3. $value[] = isset($var) ?? 'bar'; // true
  4. $value[] = isset($var) ?: 'bar'; // true
  5. var_dump($value);
  6.  


Во вторых
PHP:
скопировать код в буфер обмена
  1.  
  2. $var = 'foo';
  3. $value[] = !isset($var) ?? 'ЗАЧЕМ Я ТУТ НУЖЕН?? ТВОЮ МАТЬ!!!!! ЗАЧЧЕЕМ'; // False
  4. $value[] = !isset($var) ?: 'bar'; // bar
  5.  
  6. var_dump($value);
  7.  



Следовательно оператор `??` Либо написан от балды, и хрен знает зачем! Либо работает неправильно...

Нахрен он вообще нужен?? Если он никогда не вернёт - то, что мы задали
Няшик Отправлено: 11 Апреля, 2016 - 07:37:02 • Тема: Запрос циклом - правильно ли это? • Форум: Работа с сетью

Ответов: 3
Просмотров: 1339
PHP:
скопировать код в буфер обмена
  1.  
  2. define('_BR_', '<hr/>');
  3. if(SendAuthVk::auth('Логин', "Пароль")) {
  4.     print_r(SendAuthVk::User('access_token') . _BR_); // Получаем тока аксес токен
  5.     print_r(SendAuthVk::User());
  6. }  
  7.  



Спойлер (Отобразить)

Няшик Отправлено: 11 Апреля, 2016 - 07:08:36 • Тема: preg_match • Форум: Вопросы новичков

Ответов: 1
Просмотров: 145
PHP:
скопировать код в буфер обмена
  1.  
  2. define('_BR_', '<hr/>');
  3.  
  4. $Arr = array(
  5.     '923.6 MB (966,368,256 bytes)',
  6.     '9.6 MB (966,368,256 bytes)',
  7. );
  8.  
  9. $Count = count($Arr);
  10. echo 'Кол-во элементов: ' . $Count . _BR_;
  11.  
  12. foreach($Arr as $i => $Value) {
  13.     $elem =  'Элемент номер №' . $i;
  14.  
  15.     preg_match('/([0-9]*(?:[\.]*[\.][0-9]*|))\s{1,}([MB|KB]++)\s{1,}\((.*)\)/', $Value, $v);
  16.     echo $elem . ' - ' . $v[1] . ' : ' . $v[3] . ' - ' . $v[2] . _BR_;
  17. }
  18.  

Регулярные выражения надо подучить
Няшик Отправлено: 11 Апреля, 2016 - 06:52:29 • Тема: Что означает выражение "$value= $value ?? 0;"? • Форум: Вопросы новичков

Ответов: 14
Просмотров: 638
Мелкий пишет:
Няшик, именно что 5 != 1. К тому же там true должен быть, а не 1. А для coalesce будет 5.


Ну что вы ? Начиная с 5.3.0 вплоть до 5.6.18 отрабатывает как надо!
И даже в php7 вы не увидите разницы Улыбка А уж в будущих версиях это тоже никто не тронет
http://sandbox[dot]onlinephpfunction[dot][dot][dot]866c11fb8c0625ec

И, что бы увидеть заветные true надо прогнать код для начала через var_export
Няшик Отправлено: 10 Апреля, 2016 - 21:23:04 • Тема: Что означает выражение "$value= $value ?? 0;"? • Форум: Вопросы новичков

Ответов: 14
Просмотров: 638
Мелкий пишет:
Няшик, нет, этот способ как раз не эквивалентен и будет себя вести иначе.
Няшик Отправлено: 10 Апреля, 2016 - 20:44:45 • Тема: Что означает выражение "$value= $value ?? 0;"? • Форум: Вопросы новичков

Ответов: 14
Просмотров: 638
Дополню информацию от OrmaJever.

В более ранних версиях PHP тоже самое можно было сделать, таким вот способом
Няшик Отправлено: 10 Апреля, 2016 - 20:38:54 • Тема: Shell - Cmd • Форум: Вопросы новичков

Ответов: 2
Просмотров: 135
Viper пишет:
с этого места поподробнее.


Создать поток, с возможностью читать его...

Viper пишет:
мб нужно вывод на экран направить?

Неа, желательно в коллбэк на подобие CURLOPT_PROGRESSFUNCTION у CURL тока для shell

Ну если углубиться, то можно и без этого коллбэка, в дебрях кода через подобные функции feof и fread .... Я мало себе представляю как это сделать именно для shell Хм
(Добавление)
Окей, у меня получилось
PHP:
скопировать код в буфер обмена
  1.  
  2. $proc=proc_open('.....',
  3.   array(
  4.     array("pipe","r"),
  5.     array("pipe","w"),
  6.     array("pipe","w")
  7.   ),
  8.   $pipes);
  9. print '1 - '. stream_get_contents($pipes[1]) . PHP_EOL;
  10. print '2 - '. stream_get_contents($pipes[2]) . PHP_EOL;
  11.  


Самое главное что в документации сказано что третий элемент массива по счёту, это stderr Но однако в него результат и падает -_-

Вопрос решён
Няшик Отправлено: 10 Апреля, 2016 - 20:31:02 • Тема: Функция поиск элемента массива • Форум: Вопросы новичков

Ответов: 10
Просмотров: 609
PHP:
скопировать код в буфер обмена
  1.  
  2. if(!function_exists('ListElementInArray')) {
  3.     Function ListElementInArray($Array, $IsElem) {
  4.         $List = array();
  5.         foreach($Array as $key => $value) {
  6.             if($value === $IsElem) $List[$key] = $value;
  7.         }
  8.         return $List;
  9.     }
  10. }
  11.  
  12. $Elements = array('Tolstoy_1','Pyshkin','Sholohow','Timati', 'Tolstoy_1');
  13. $Element = 'Tolstoy_' . rand(0, 1);
  14.  
  15. $Test = ListElementInArray($Elements, $Element);
  16.  
  17. if(empty($Test)) { // Не пустой ли массив ??
  18.     // Пустой гад! Выводим
  19.     echo $Element . ' not found';
  20. } else {
  21.     // В этом блоке печатаем всё найденное
  22.     foreach($Test as $idx => $elm) {
  23.         echo 'Нашёл ' . $elm . ' на индексе: ' . $idx . PHP_EOL;
  24.     }
  25. }
  26.  
Няшик Отправлено: 10 Апреля, 2016 - 20:12:51 • Тема: Shell - Cmd • Форум: Вопросы новичков

Ответов: 2
Просмотров: 135
Вообщем нужно выполнить Shell так что бы процесс можно было контролировать, так как если мы пробуем обычным способом `` или shell_exec то ничего не выводит.

Если пробовать через cmd.exe то там выводит такую информацию

"101 KB/s (3613 bytes in 0.034s)"

и эта информация меняется вплоть до окончания сего процесса

Предполагаю Ниндзя что это popen\proc_open но у меня ничего с ними не вышло
Няшик Отправлено: 20 Февраля, 2016 - 16:54:06 • Тема: Разбить текст, по запятым • Форум: Регулярные выражения

Ответов: 2
Просмотров: 364
Помогли, http://vk[dot]com/wall-175_172970?reply=173000
Няшик Отправлено: 20 Февраля, 2016 - 14:42:10 • Тема: Разбить текст, по запятым • Форум: Регулярные выражения

Ответов: 2
Просмотров: 364
Нужно регулярными условиями создать похожий алгоритм
PHP:
скопировать код в буфер обмена
  1. $Scob = false;
  2. foreach(str_split('p f, dd*(erge, erg), hrth') as $v) {
  3.     if($v == '(')
  4.         $Scob = true;
  5.     elseif($v == ')')
  6.         $Scob = false;
  7.  
  8.     if($v == ',' and !$Scob) {
  9.         $ArgsI++;
  10.     } else
  11.         $ArgPars[$ArgsI] .= $v;
  12. }
  13.  
  14. print_r($ArgPars);


Результат
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [] => p f
  3.     [1] =>  dd*(erge, erg)
  4.     [2] =>  hrth
  5. )
  6.  


Дело в том что я вообще не представляю как такое провернуть регулярными условиями, хотя с рекурсией знаком на среднем уровне Огорчение
Няшик Отправлено: 20 Февраля, 2016 - 13:18:24 • Тема: Побитовые операции • Форум: Вопросы новичков

Ответов: 3
Просмотров: 173
T1grOK пишет:
Битовый сдвиг в PHP не гарантирует преобразование к первоначальному состоянию.


Печаль Хм хотел сделать расшифровку, которая прекрасно работает на c++ или на JS
Няшик Отправлено: 19 Февраля, 2016 - 22:10:28 • Тема: Вопрос по регулярке(отрицание) • Форум: Вопросы новичков

Ответов: 1
Просмотров: 120
^[0-9-+]+$
Няшик Отправлено: 19 Февраля, 2016 - 22:03:39 • Тема: Побитовые операции • Форум: Вопросы новичков

Ответов: 3
Просмотров: 173
Куда делись пару байт ? Хм

PHP:
скопировать код в буфер обмена
  1. $S = array();
  2. $S[0][1] = 30716 >> 1;                  # = 15358
  3. $S[0][2] = $S[0][1] >> 1;               # = 7679
  4. $S[0][3] = (($S[0][2] >> 1) ^ 0xA001);  # = 44798
  5.  
  6. $S[1][1] = (0xA001 ^ $S[0][3]) << 1;    # = 7678
  7. $S[1][2] = $S[1][1] << 1;               # = 15356
  8. $S[1][3] = $S[1][2] << 1;               # = 30712


Видим что я даю 30716 а результат 30712 А?!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB