Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
потому что это не 1 массив, а много массивов по 1 элементу.
каким образом будет тут работать сортировка?

 
Хорошо, и скажи мне, как это сделать

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 11:32 22-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Хорошо, и скажи мне, как это сделать

загнать результат каждого preg_match_all (а тут, очевидно, идет в цикле) в один массив и уже его сортировать.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 11:33 22-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Всегда загадочный,
Если бы я был программистом, я бы знал, как это сделать,
Но если я напишу здесь и потому что я прошу помощи, это означает, что я не могу решить проблему
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 16:52 22-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
что я не могу решить проблему

я вам и подсказываю, как ее решить. а не пишу решение за вас, иначе это не желание научиться программированию.
 
повторю на пальцах.
 
то, что сейчас, это выглядит как

Код:
foreach($text as $str) {
   preg_match_all(....);
   var_dump(...);
}

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

Код:
$data =  [];
foreach($text as $str) {
   preg_match_all(....);
   $data[] = $result2[0];
}
natsort($data);
var_dump($data);

 
если $result2[0] тоже массив, то нужно "развернуть" его. в php8 это делается через ...
$data = array_merge($data, ...$result[0]);

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 21:45 22-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Этот неполный код не ясно
по крайней мере для меня
 
это не работает
 

Код:
 
$data =  [];
    foreach($text as $str) {
    preg_match_all('/<?(\d+)>/s', $row->as_character, $data);
    $data[] = $result2[1];
    }
    natsort($data);
    var_dump($data);  
 

 
 
 
Это работает, но без сортировки
 

Код:
//$row->as_character
 
preg_match_all('/<?(\d+)>/s', $row->as_character, $result2);
$result2 = $result2[1];
 
echo '<br>';
 
natsort($result2);
 
foreach ( $result2 as $res ) {
    
    echo $res;
}
 
//var_dump($result2);  
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:01 23-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
это не работает

и не будет работать, потому что чушь написана. думайте, там такие явные ляпы.
нужно начать думать, а не писать наобум.
 
честно, я вам в сотый раз скажу - не ваше это и не будет. не пытаетесь думать как выполняется программа.
 
конкретный код я не напишу, потому что я не вижу что и как у вам там остальное делается.

Цитата:
 
array(1) { [0]=> string(2) "21" }
 
array(1) { [0]=> string(2) "13" }
 
array(1) { [0]=> string(2) "27" }
 
array(1) { [0]=> string(1) "2" }
 
array(1) { [0]=> string(2) "20" }
 
array(1) { [0]=> string(2) "22" }
 
array(1) { [0]=> string(2) "32" }  

говорит о том, что var_dump срабатывал 7 раз, то есть был вызван в цикле 7 раз. это НЕ результат обработки одного preg_match_all, потому что тогда был бы 1 массив с 7 элементами.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 10:06 23-11-2022 | Исправлено: Mavrikii, 10:08 23-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Как мне решить это?
В PHP 5.6 я не получил ошибок
Теперь я использую PHP 7 и PostgreSQL
 
Как видно на скриншоте, год отсутствует в $var2
 
   
 

Код:
<?php
$var1 = $row->birthday;
$var2 = $row->year;
if($var1 != "0000-00-00" AND $var1 != null){
echo $var2 - substr($var1, 0, 4);
}else{
echo 'No birthday';
}
?>


Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 07:02 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
очевидно, что $var2 не определяется как год еще ранее, не в этом куске кода.
поэтому php не знает как из '???' что либо вычесть. но проблема не тут, а там, где $row->year

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 07:07 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
 
Да, поле year может быть пустым (и присутствовать ????)
 
Как я могу устранить эту ошибку?

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 07:22 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Как я могу устранить эту ошибку?

ну откуда я знаю что вы хотите сделать? проверяйте, что не пустое, перед вычислениями.
https://www.php.net/manual/en/function.is-numeric.php

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 07:26 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я потерял себя с кодом, что не так?
 
 

Код:
 
$var1 = $row->birthday;
$var2 = $row->year;
if($var2 != '????'){
 
echo $var2 - substr($var1, 0, 4);
 
echo 'Year missing';
 
}elseif($var1 != "0000-00-00" AND $var1 != null){
 
echo $var2 - substr($var1, 0, 4);
 
}else{
 
echo 'No birthday';
}
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:04 25-11-2022 | Исправлено: zagorisback, 08:11 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Я потерял себя с кодом, что не так?

может там не '????'
я же показал чем проверять, какой функцией.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 08:09 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$var1 = $row->birthday;
$var2 = $row->year;
 
Эта часть кода работает
 
if($var2 != '????'){  
 
echo $var2 - substr($var1, 0, 4);  
 
}else{
echo '<b style="color:red;">Year missing</b>';
}
 
 
Эта часть кода не работает

 
if($var2 != null){
 
echo $var2 - substr($var1, 0, 4);  
 
}else{
echo '<b style="color:red;">Birthday missing</b>';
}
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:31 25-11-2022 | Исправлено: zagorisback, 08:39 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback
да сколько же можно тупить
 

Код:
if (is_numeric($var2)) {
echo $var2 - substr($var1, 0, 4);  
} else {
echo '<b style="color:red;">Year missing</b>';
}

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 08:46 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 

Цитата:
if (is_numeric($var2)) {
echo $var2 - substr($var1, 0, 4);  
} else {
echo '<b style="color:red;">Year missing</b>';
}  

 
 
Хорошо, ваш код лучше, но мой тоже работает
 
Я также должен проверить поле «День рождения», и я сделал
Но есть случаи, когда «день рождения» и «год» не присутствуют
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 08:53 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Но есть случаи, когда «день рождения» и «год» не присутствуют

это нужно решать на уровне заполнения базы. чтобы не ??? были, а null

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 09:02 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
это нужно решать на уровне заполнения базы. чтобы не ??? были, а null

 
и официального IMDB, так что вина и из них

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 09:12 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
и официального IMDB, так что вина и из них

нет, у них это не вызывает проблем, только в вашем коде. значит вы делаете неправильно.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 09:15 25-11-2022
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
это работает,
 
   
 
но это?
Год присутствует, но пропал день рождения (birthday)
 
   
 

Код:
 
$var0 = $row->birthday;
$var1 = substr($var0, 0, 4);
$var2 = $row->year;
 
 
if (is_numeric($var2))  {
    echo $var2 - $var1;  
    } else {
    echo '<b style="color:red;">Year missing</b>';
    }  
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 10:29 25-11-2022 | Исправлено: zagorisback, 10:32 25-11-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
Год присутствует, но пропал день рождения (birthday)

проверять нужно и $var1
if (is_numeric($var2) && is_numeric($var1))

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 10:31 25-11-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru