как использовать переменную в качестве объекта? - PullRequest
1 голос
/ 15 декабря 2011

это функция в классе, которую я использую

public function content($search) {
        $this->dbconnection();
        $search = mysql_real_escape_string($search);

        $q= mysql_query("SELECT title FROM xx WHERE title LIKE '%$search%'");
        $s = mysql_fetch_array($q);
        foreach ($s as $key => $val) {
            $$key = $val;
        }

    }

и в файле index.php

$cl= new Class;
$test = $cl->content('cloud');

и вопрос

как мне отобразить переменную, которую я установил внутри цикла foreach?

$test->title; <это точно не работает, но это объясняет то, что я пытаюсь сделать. </p>

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

Установите публичное свойство в вашем классе и присвойте ему переменную title. Добавьте это к вершине вашего класса:

public $title = ''; 

Затем присвойте переменную в вашем foreach так:

$this->title = $whatever;
1 голос
/ 15 декабря 2011

Я действительно не понимаю, что вы пытаетесь сделать в этом фрагменте кода.Ваша функция content () не возвращает значение.Так что в вашей переменной $ test ничего не сохраняется.Ваша функция content () создает набор переменных с ключевыми значениями, полученными из запроса в качестве имени.Поэтому, если вы хотите получить значение переменной / ключа $ title, вам просто нужно повторить это.

Попробуйте:

echo $title;

после вызова функции content (),Это должно отобразить значение заголовка, который вы искали, при условии, что ваш запрос вернул что-то и «заголовок» в качестве ключа.Если вы хотите создать что-то вроде:

$res = $classObject->content('cloud');
echo $res->title;

Вам нужно будет создать такой объект, который имеет атрибут заголовка, и вернуть его в вашей функции.

1 голос
/ 15 декабря 2011

Возвращает массив как объект:

public function content($search)
{
    $this->dbconnection();
    $search = mysql_real_escape_string($search);

    $q = mysql_query("SELECT title FROM xx WHERE title LIKE '%$search%'");
    $s = mysql_fetch_assoc($q);

    return (object)$s;
}

Тогда в вашем коде:

$cl= new Class;
$content = $cl->content('cloud');
echo $content->title;

В качестве альтернативы, вы можете извлечь строку как объект, используя mysql_fetch_object

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...