Функция count() выдает разные значения

mario512

Добрый день. Есть массив, размер которого составляет 13542 элемента. Если скрипт запустить в браузере, то в этом случае функция count() возвращает 13542. Если скрипт запустить используя ssh/bash/shell/cron то функция вернет другое число.
Браузер:
var_dump -> int(13542)
shell:
var_dump ->int(17366)

массив:

PHP:
  1. (
  2.     [offer] => Array
  3.         (
  4.             [0] => Array
  5.                 (
  6.                     [@attributes] => Array
  7.                         (
  8.                             [id] => 00000009856_1
  9.                             [available] => true
  10.                             [selling_type] => r
  11.                             [group_id] => 29261
  12.                         )
  13.  
  14.                     [vendorCode] => 9856
  15.                     [name] => Кожаный чехол (книжка) Nillkin Sparkle Series для Apple iPhone 6/6s plus (5.5«)
  16.                    [url] => https://itsellopt.com.ua/products/kozhanyy-chehol-knizhka-nillkin-sparkle-series-dlya-apple-iphone-6-plus-55/29272
  17.                    [price] => 219
  18.                    [currencyId] => UAH
  19.                    [categoryId] => 11101
  20.                    [category] => Apple iPhone 6/6s plus (5.5″)
  21.                     [vendor] => Nillkin
  22.                     [param] => Белый
  23.                     [picture] => Array
  24.                         (
  25.                             [0] => https://itsellopt.com.ua/uploads/YZ/HE/tv/ZZ/IT/5t/6m/Oz/85/Pc/Cc/Uy/7G/wT/Xl/gN.jpg
  26.                             [1] => https://itsellopt.com.ua/uploads/A0/oe/jH/bE/o1/9S/9Y/Cj/gh/iP/Nv/OI/mj/KK/TA/TJ.jpg
  27.                             [2] => https://itsellopt.com.ua/uploads/43/5Q/DC/mH/fu/us/MY/gW/Bk/Ku/oY/LY/Zk/fk/tl/oy.jpg
  28.                         )
  29.  
  30.                     [description] =>
  31.  
  32.  
  33.     Бренд – Nillkin
  34.  
  35.     Формфактор – книжка
  36.  
  37.     Материал –синтетическая кожа + поликарбонат
  38.  
  39.     Поверхность – шероховатая
  40.  
  41.  
  42.  
  43.  
  44.  
  45.     ✔️ потрясающая книжка от компании Nillkin;
  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.  
  77.  
  78.  
  79.                 [13541] => Array
  80.                 (
  81.                     [@attributes] => Array
  82.                         (
  83.                             [id] => 00000042627_6
  84.                             [available] => true
  85.                             [selling_type] => r
  86.                             [group_id] => 208303
  87.                         )
  88.  
  89.                     [vendorCode] => 42627
  90.                     [name] => Чехол Camshield mate TPU со шторкой для камеры для Xiaomi Mi 10T / Mi 10T Pro
  91.                     [url] => https://itsellopt.com.ua/products/cexol-camshield-mate-tpu-so-storkoi-dlya-kamery-dlya-xiaomi-mi-10t-lite-redmi-note-9-pro-5g-1/208309
  92.                     [price] => 169
  93.                     [currencyId] => UAH
  94.                     [categoryId] => 57501
  95.                     [category] => Xiaomi Mi 10T
  96.                     [vendor] => Epik
  97.                     [param] => Черный
  98.                     [picture] => Array
  99.                         (
  100.                             [0] => https://itsellopt.com.ua/uploads/TSlavdpaUPhiAf43DNaJzLxCAKnIhXax.jpg
  101.                             [1] => https://itsellopt.com.ua/uploads/Utp7LOl1EEBTznH9t7HhcyCTVAO4mj2S.jpg
  102.                             [2] => https://itsellopt.com.ua/uploads/m0xZcyZiNE9pkp8biqpJkoDSufMmKz9h.jpg
  103.                             [3] => https://itsellopt.com.ua/uploads/aaj8SH1Mw2BOrnYaIucEVhhwJYwvd9Mm.jpg
  104.                         )
  105.  
  106.                     [description] =>
  107. Чехол Camshield mate TPU со шторкой для камеры для Xiaomi Mi 10T / Mi 10T Pro (Черный)
  108.  
  109.  
  110.                 )
  111.  
  112.         )
  113.  
  114. )

WTF?

 

lastdays

Русские символы. Переводи всё в utf8

 

mario512

Массив получаю разбирая xml файл.

PHP:
  1. $xml                           = simplexml_load_file($file_xml,‘SimpleXMLElement’, LIBXML_NOCDATA);  //получаю объект
  2. $product_data_arr   = json_decode(json_encode($xml->shop->offers), true);                                 //преобразую в массив

Как в данном случае преобразовать кодировку ?
Вроде заданна в самом xml — <?xml version=»1.0″ encoding=»utf-8″?>

 

lastdays

Как преобразовать: mb_convert_encoding
А на деле, мсье, у вас какая-то хуита..я про decode + encode в одной строке, зачем?

 

mario512

Подсмотрел этот трюк для быстрого преоразования объекта в массив)))

Спасибо, завтра попробую.

 

mario512

mb_convert_encoding результат не поменялся. Есть еще идеи?

 

artoodetoo

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

например, json_encode может превратить кириллицу в строку типа &#x0410;&#x0432;&#x0442;&#x043e;&#x0440; и в одном из случаев ты это делаешь.

см. https://php.ru/forum/threads/ne-rabotaet-proverka-ravenstva.90563/

 

mario512

Тема закрыта. Скрипт, в зависимости от того как я его запускал, использовал разные каталоги. Соответственно, я парсил разные файлы. Впредь буду указывать абсолютные пути к файлам))))

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *