За последние 24 часа нас посетили 16825 программистов и 1644 робота. Сейчас ищут 1020 программистов ...

Illegal string offset 'name'

Тема в разделе "PHP для новичков", создана пользователем guestphp, 13 апр 2015.

  1. guestphp

    guestphp Новичок

    С нами с:
    11 апр 2015
    Сообщения:
    86
    Симпатии:
    0
    Здравствуйте.

    Создаём массив в файле file.php.

    Код (Text):
    1. <?php
    2. $array = array(
    3.     "name" => "QWERTY",
    4.     "number" => "123456",
    5. );
    6. print_r($array);
    7. ?>
    Отображается как:

    Создаём файл test.php с целью отображения данных из массива, а именно данных с именем [name], то есть для отображение на странице только QWERTY:

    Код (Text):
    1.  
    2. <?php
    3. $masiv = file_get_contents ('http://site.com/file.php');
    4.  
    5. echo $masiv['name'];
    6.  
    7. ?>
    Итог:

    Код (Text):
    1. Warning: Illegal string offset 'name' in /директория/test.php on line 4
    2. <
    Почему на странице не отображается: QWERTY ?
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: массив

    Вспомните мои сообщения. file() и file_get_contents().
    Потом прочитайте ошибку. Хоть гугл-транслейтом переведите.
    Потом ещё раз вспомните мои сообщения.
    Потом посмотрите на строчку $masiv["name"];
     
  3. guestphp

    guestphp Новичок

    С нами с:
    11 апр 2015
    Сообщения:
    86
    Симпатии:
    0
    Re: массив

    Учитывая, что при выводе данных из массива в одном файле, без ссылки на файл для переменной

    Код (Text):
    1.  
    2. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    3. <?php
    4. $array = array(
    5.     "name" => "QWERTY",
    6.     "number" => "123456",
    7. );
    8.  
    9. echo $array['name'];
    10. ?>
    Результат положительный, получается:

    Код (Text):
    1. QWERTY
    Выходит, что проблема на этапе обработки информации на ссылающийся файл file.php. Какая альтернатива file_get_contents ?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: массив

    Вы так получаете результат выполнения файла file.php на сервере, нафиг вам оно надо? Получается просто строка, никак не ассоциативный массив... Если там файл php, то require или include. А вообще, почитайте, что-ли про язык чего-нибудь умное....
     
  5. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: массив

    Понятно.
    в файле вы выводите одно значение из массива echo $array['name'];
    В другом файле считываете это значение с помощью file_get_contents().
    курим мануал по file_get_contents и узнаём, что file_get_contents то, оказывается, возвращает строку.
    Но всё равно будем пытаться использовать переменную $masiv, хранящую строку, как массив.
    Вместо echo $masiv['name'];
    используем echo $masiv;

    Добавлено спустя 1 минуту 12 секунд:
    А вообще да, не занимаемся наркоманией и используем include();
     
  6. guestphp

    guestphp Новичок

    С нами с:
    11 апр 2015
    Сообщения:
    86
    Симпатии:
    0
    Re: массив

    в file.php массив, из которого нужно вывести значения с [name], а именно QWERTY.

    если вместо file_get_contents использовать require и include результата нет, отображается ошибка.

    Добавлено спустя 6 минут 34 секунды:
    при выполнение ваших рекомендаций:

    Код (Text):
    1.  
    2. <?php
    3. $masiv = file_get_contents ('http://site.com/file.php');
    4.  
    5. echo $masiv;
    6.  
    7. ?>
    Отображается:

     
  7. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: массив

    Значит у вас первый файл совсем не QWERTY отдаёт.
     
  8. guestphp

    guestphp Новичок

    С нами с:
    11 апр 2015
    Сообщения:
    86
    Симпатии:
    0
    Re: массив

    Содержимое первого файла, он же file.php

    Код (Text):
    1. <?php
    2. $array = array(
    3.     "name" => "QWERTY",
    4.     "number" => "123456",
    5. );
    6. ?>
    Задача состоит не в том, чтобы, в файле test.php вывести обработанный в file.php массив, а использовать находящийся массив в файле file.php и выполнить обработку на странице test.php. Таким образом, полученный массив из файла file.php задаём в переменную $masiv и уже эту переменную, обрабатываем как массив на странице test.php
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Код (PHP):
    1. <?php
    2. $array = array(
    3.     "name" => "QWERTY",
    4.     "number" => "123456",
    5. );
    6. ?>
    Оставляете в file.php

    Код (PHP):
    1. include 'file.php';
    2. echo $array['name']; 
    Такой будет test.php

    И да, у вас очень глупая привычка использовать www-адреса.
    Надо указывать относительные или абсолютные системные пути.
     
  10. guestphp

    guestphp Новичок

    С нами с:
    11 апр 2015
    Сообщения:
    86
    Симпатии:
    0
    Спасибо за отклик. Но ваш пример, использует переменную $array которая находится на странице file.php.

    Цель, для массива который находится на странице file.php, задать новую переменную $masiv и обрабатывать эту переменную как массив.
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Простите, отсыпьте, а?
    Для чего? Смысл этого? Вы инклудите один файл в другой, тем самым массив $array у вас появляется в файле test.php
    Раз так хотите задать новую переменную, сделайте ненужное:
    Код (Text):
    1. $masiv = $array;
    и пользуйтесь дальше $masiv