Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вытащить определенный данные [2]
Форумы портала PHP.SU » » Вопросы новичков » Вытащить определенный данные

Страниц (3): « 1 [2] 3 »
 

16. likvidator - 12 Июня, 2015 - 16:59:22 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $matches=array(
  4. "Алина",
  5. "Лена",
  6. "Маша",
  7. "Елена",
  8. "Юлия");
  9. $json=file_get_contents($_SERVER['DOCUMENT_ROOT']."/15001_1000.json");
  10. $k=json_decode($json,1);
  11. foreach($k['response'] as $data){
  12. if(in_array($data['first_name'], $matches)) {
  13. echo "$data[id]::$data[first_name]<br>";
  14. }
  15. }
  16. ?>
  17.  
17. BEUJ - 17 Июня, 2015 - 08:10:00 - перейти к сообщению
likvidator пишет:
осмелюсь предположить,что это битый json (т.к. скопирована часть)...
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $json='{"response":[{"id":15001,"first_name":"Елена","last_name":"Дроздова","nickname":""},{"id":15002,"first_name":"Алина","last_name":"Талипова","deactivated":"deleted"},{"id":15003,"first_name":"Натали","last_name":"Соснина","nickname":"","photo_id":"15003_303466587"},{"id":15004,"first_name":"Сердар","last_name":"Курбанов","nickname":""},{"id":15005,"first_name":"Ольга","last_name":"Писаренко","nickname":"","photo_id":"15005_358280295"}]}';
  4. $k=json_decode($json,1);
  5. foreach($k['response'] as $data){
  6. echo "$data[id]::$data[first_name]<br>";
  7. }
  8. ?>
  9.  

Подскажите пожалуйста. Выдает ошибку на локальном сервере Denwer: Warning: Invalid argument supplied for foreach(), а на обычном сервере работает нормально. В чем проблема?
18. Sail - 17 Июня, 2015 - 08:57:48 - перейти к сообщению
BEUJ пишет:
Выдает ошибку на локальном сервере Denwer: Warning: Invalid argument supplied for foreach(), а на обычном сервере работает нормально. В чем проблема?

и смотрите в описании функции json_decode(), в каких случаях она возвращает null.
(Добавление)
А на "обычном сервере" работает нормально потому, что там - UTF8, а локально у вас используется другая кодировка, которую json-функции без не переваривают.
19. BEUJ - 17 Июня, 2015 - 15:00:38 - перейти к сообщению
Sail пишет:
BEUJ пишет:
Выдает ошибку на локальном сервере Denwer: Warning: Invalid argument supplied for foreach(), а на обычном сервере работает нормально. В чем проблема?

и смотрите в описании функции json_decode(), в каких случаях она возвращает null.
(Добавление)
А на "обычном сервере" работает нормально потому, что там - UTF8, а локально у вас используется другая кодировка, которую json-функции без не переваривают.

Выставил на кодировку в Open Server UTF-8
Нажмите для увеличения

Не работает все равно
20. Sail - 17 Июня, 2015 - 15:37:20 - перейти к сообщению
BEUJ пишет:
Не работает все равно

Ну, раз уж... то сделайте так:
PHP:
скопировать код в буфер обмена
  1. header("Content-Type: text/html; charset=utf8");
  2. $str = '{"response":[{"id":15001,"first_name":"Елена","last_name":"Дроздова","nickname":""},{"id":15002,"first_name":"Алина","last_name":"Талипова","deactivated":"deleted"},{"id":15003,"first_name":"Натали","last_name":"Соснина","nickname":"","photo_id":"15003_303466587"},{"id":15004,"first_name":"Сердар","last_name":"Курбанов","nickname":""},{"id":15005,"first_name":"Ольга","last_name":"Писаренко","nickname":"","photo_id":"15005_358280295"}]}';
  3. $json = iconv('cp1251', 'utf-8', $str);
  4. $k=json_decode($json,1);
  5. foreach($k['response'] as $data){
  6.     echo "{$data['id']}::{$data['first_name']}<br>";
  7. }

(Добавление)
PS: об используемой кодировке исходников ведь тоже надо помнить...
21. BEUJ - 17 Июня, 2015 - 16:10:24 - перейти к сообщению
Sail пишет:
BEUJ пишет:
Не работает все равно

Ну, раз уж... то сделайте так:
PHP:
скопировать код в буфер обмена
  1. header("Content-Type: text/html; charset=utf8");
  2. $str = '{"response":[{"id":15001,"first_name":"Елена","last_name":"Дроздова","nickname":""},{"id":15002,"first_name":"Алина","last_name":"Талипова","deactivated":"deleted"},{"id":15003,"first_name":"Натали","last_name":"Соснина","nickname":"","photo_id":"15003_303466587"},{"id":15004,"first_name":"Сердар","last_name":"Курбанов","nickname":""},{"id":15005,"first_name":"Ольга","last_name":"Писаренко","nickname":"","photo_id":"15005_358280295"}]}';
  3. $json = iconv('cp1251', 'utf-8', $str);
  4. $k=json_decode($json,1);
  5. foreach($k['response'] as $data){
  6.     echo "{$data['id']}::{$data['first_name']}<br>";
  7. }

(Добавление)
PS: об используемой кодировке исходников ведь тоже надо помнить...

Спасибо большоеУлыбка Заработало! А как в этот скрипт кодировку вставить?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $matches=array(
  3. "Алина",
  4. "Лена",
  5. "Маша",
  6. "Елена",
  7. "Юлия");
  8. $json=file_get_contents($_SERVER['DOCUMENT_ROOT']."/15001_1000.json");
  9. $k=json_decode($json,1);
  10. foreach($k['response'] as $data){
  11. if(in_array($data['first_name'], $matches)) {
  12. echo "$data[id]::$data[first_name]<br>";
  13. }
  14. }
  15. ?>
  16.  
22. Sail - 17 Июня, 2015 - 16:29:33 - перейти к сообщению
BEUJ пишет:
А как в этот скрипт кодировку вставить?

В какой кодировке сохранён файл с данными, подгружаемыми в переменную $json?
В какой кодировке на "обычном сервере" сохранён файл скрипта?
В какой кодировке на локальном сервере сохранён файл скрипта?
Какое значение параметра default_charset выдаёт phpinfo() (в обоих случаях)?
23. BEUJ - 17 Июня, 2015 - 16:40:41 - перейти к сообщению
Sail пишет:
BEUJ пишет:
А как в этот скрипт кодировку вставить?

В какой кодировке сохранён файл с данными, подгружаемыми в переменную $json?
В какой кодировке на "обычном сервере" сохранён файл скрипта?
В какой кодировке на локальном сервере сохранён файл скрипта?
Какое значение параметра default_charset выдаёт phpinfo() (в обоих случаях)?

1. Не знаю. Там просто код, приведенный в предыдущем сообщении.
2 и 3 везде в UTF-8
4. Не понял что это такое
24. Sail - 17 Июня, 2015 - 16:43:50 - перейти к сообщению
BEUJТогда посмотрите, что получится, если преобразовать переменную $json с текстом "неизвестной" кодировки...
После 8-й строки вставьте:
PHP:
скопировать код в буфер обмена
  1. $json = iconv('cp1251', 'utf-8', $json);
25. BEUJ - 17 Июня, 2015 - 16:46:50 - перейти к сообщению
Sail пишет:
BEUJТогда посмотрите, что получится, если преобразовать переменную $json с текстом "неизвестной" кодировки...
После 8-й строки вставьте:
PHP:
скопировать код в буфер обмена
  1. $json = iconv('cp1251', 'utf-8', $json);

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $matches=array(
  3. "Алина",
  4. "Лена",
  5. "Маша",
  6. "Елена",
  7. "Юлия");
  8. $json=file_get_contents($_SERVER['DOCUMENT_ROOT']."/10001_1000.json");
  9. $json = iconv('cp1251', 'utf-8', $json);
  10. $k=json_decode($json,1);
  11. foreach($k['response'] as $data){
  12. if(in_array($data['first_name'], $matches)) {
  13. echo "$data[id]::$data[first_name]<br>";
  14. }
  15. }
  16. ?>

Вот так? Ошибку выдает
26. Sail - 17 Июня, 2015 - 16:53:42 - перейти к сообщению
BEUJ пишет:
Вот так? Ошибку выдает

Какую ошибку?
27. BEUJ - 17 Июня, 2015 - 16:55:54 - перейти к сообщению
Sail пишет:
BEUJ пишет:
Вот так? Ошибку выдает

Какую ошибку?

Warning: Invalid argument supplied for foreach(),
28. Sail - 17 Июня, 2015 - 17:03:29 - перейти к сообщению
BEUJ пишет:
Warning: Invalid argument supplied for foreach(),

Добавьте второй строкой header("Content-Type: text/html; charset=utf8");
(Добавление)
и замените
PHP:
скопировать код в буфер обмена
  1. echo "$data[id]::$data[first_name]<br>";
  2. //на
  3. echo "{$data['id']}::{$data['first_name']}<br>";
29. BEUJ - 17 Июня, 2015 - 17:05:42 - перейти к сообщению
Sail пишет:
BEUJ пишет:
Warning: Invalid argument supplied for foreach(),

Добавьте второй строкой header("Content-Type: text/html; charset=utf8");
(Добавление)
и замените
PHP:
скопировать код в буфер обмена
  1. echo "$data[id]::$data[first_name]<br>";
  2. //на
  3. echo "{$data['id']}::{$data['first_name']}<br>";

Такая же ошибка
30. Sail - 17 Июня, 2015 - 17:07:21 - перейти к сообщению
BEUJ пишет:
Такая же ошибка

А что покажет после 8-й строки var_dump($json);?

 

Powered by ExBB FM 1.0 RC1