victorzadorozhnyy
@victorzadorozhnyy

Что за волшебные цифры и почему они так работают с intval()?

открываю файл csv загоняю в аррей с ключами sku и description внутри
далее мне нужно проверить товар в базе woocommerce и если такой товар есть то..., но с ключом происходит сранная метаморфоза в этом моменте
foreach ( $Arr as $key=>$sku ){
            $KEY = intval($key);
            $DESCR = $mysqli->real_escape_string( $sku['description'] );
            $int = wc_get_product_id_by_sku( $KEY );

            printf( 'wc_get_product_id_by_sku( '.$KEY.' )' . $int . " </br>");
            
            if($int != 0) {

                $query = "INSERT INTO `sku_descr_cat_sub`(`sku`, `descr`) 
                  VALUES ( '$KEY', '$DESCR')";
                
                $success= $mysqli->query($query)
                or printf("Error message: %s\n", $mysqli->error);

            };
        }

при дебаге видно, что intval("930016005808") равняется 2147483647
f8447d76e3654faf857077f2be5b8119.jpg

При просмотре csv файл выглядит так
a7f20e7ac78b47aa83f2823a7fe33fd3.jpg
пробовал форматировать колонку в excel и все выглядит нормально, но не работает
пробовал использовал без преведения к int
$KEY = $key;


Что это вообще и как получить нормальные цифры?
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
victorzadorozhnyy
@victorzadorozhnyy Автор вопроса
все оказалось просто, засунул все в mysql таблицу и для sku задал varchart(20) с int(255) не хотело работать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Winsik
@Winsik
сис.админ, недопрограммист :)
intval — Возвращает целое значение переменной
Максимальное значение зависит от операционной системы. В 32-х битных системах максимальное знаковое целое лежит в диапазоне от -2147483648 до 2147483647. Так, например, в такой системе, intval('1000000000000') вернет 2147483647. Максимальное знаковое целое значение для 64-х битных систем - 9223372036854775807.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы