Как отобразить более одного объекта из сообщения в php? - PullRequest
0 голосов
/ 05 октября 2011

Я не знаком с php.

Я пишу из формы, и мой php выглядит так:

// Object syntax looks better and is easier to use than arrays to me
    $post = new stdClass;

    // Usually there would be much more validation and filtering, but this
    // will work for now.
    foreach ($_POST as $key => $val)
        $post->$key = trim(strip_tags($_POST[$key]));

В форме у меня есть поля, такие как имя кулака, фамилия, адрес, почтовый индекс, город, штат и т. Д.

Информация будет отображаться в таблице на моей следующей странице (например) с:

<?php echo $post->name; ?>

, так как я использую синтаксис объекта.

Если я хочу, чтобы ячейка, отображающая адрес, объединяла полный адрес, я пишу это так:

<?php echo $post->address, city, state, zip; ?>

В принципе, я хотел бы показать адрес, так как адрес обычно отображается (например, 123 Эта улица, город, AZ, 55555)

В идеале, это будет запятая, как адрес будет написано. Так что я уверен, что я не делаю это правильно прямо сейчас.

Ответы [ 7 ]

7 голосов
/ 05 октября 2011

Попробуйте это:

<?php echo htmlspecialchars("{$post->address}, {$post->city}, {$post->state}, {$post->zip}"); ?>

С помощью фигурных скобок можно заключать ссылки на объекты PHP в строку (вместо необходимости использовать конкатенацию).

3 голосов
/ 06 октября 2011

Вы можете просто создать переменные переменные следующим образом:

foreach ($_POST as $key => $val)
{
    ${$key} = trim( strip_tags($val) );
}

echo "$street, $city, $state, $zip";

Проверьте полный код на pastebin: http://pastebin.com/MMpSVjNv

3 голосов
/ 05 октября 2011

Лично у меня будет Address объект внутри вашего Post объекта.Таким образом, это выглядело бы следующим образом:

class Post {
    var $title;
    var $address;
}

class Address {
    var $street_address;
    var $locality;
    var $region;
    var $postal_code;

    function __toString() {
        return implode(', ', array($this->street_address, $this->locality, $this->region, $this->postal_code));
    }
}

$address = new Address($street_address, $locality, $region, $postal_code);
$post    = new Post('title', $address);

Затем вы можете захватить свой адрес запятыми, например, так:

<p id="address"><?php echo $post->address; ?></p>

Свойство address будет экземпляром вашего Addressобъект, и, как вы видите его, он будет вызывать магический метод __toString этого объекта, выводя компоненты адреса, разделенные запятыми.

3 голосов
/ 05 октября 2011

Если порядок элементов в почтовом объекте соответствует нужному вам порядку:

echo implode(', ', (array) $post);

Если нет, вам нужно сделать это в общих чертах, как и во многих других ответах, например:

echo "{$post->address}, {$post->city}, {$post->state}, {$post->zip}";

Однако при выводе в HTML отсутствует важный момент:

echo htmlspecialchars(implode(', ', (array) $post));

соответственно:

echo htmlspecialchars("{$post->address}, {$post->city}, {$post->state}, {$post->zip}");
3 голосов
/ 05 октября 2011

Вам нужно использовать $post-> каждый раз, когда вы хотите сослаться на свойство из него.Различные параметры echo будут объединять строки.Так что если вы хотите показать эти свойства, разделенные запятыми:

<?php echo $post->address, ',', $post->city, ',', $post->state, ',', $post->zip; ?>
2 голосов
/ 05 октября 2011

Закрыть, но не совсем:

<?php echo $post->address, "<br>", $post->city, " ", $post->state, "<br>", $post->zip ?>

echo может принимать несколько аргументов, разделенных запятыми.Альтернативой является использование нескольких эхо-вызовов.

2 голосов
/ 05 октября 2011
<?php echo $post->address.", ".$post->city.", ".$post->state.", ".$post->zip; ?>

.-Оператор, заключающий строки в php. Вы должны взглянуть на php-учебник, чтобы разобраться с этим вопросом: http://tut.php -quake.net / ru /

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