如何在php中回复多个对象?

时间:2011-10-05 16:36:49

标签: php arrays object post

我不熟悉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]));

在表单上我有Fist Name,Last Name,Address,Zip,City,State等字段。

信息将显示在我下一页的表格中(例如):

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

因为我正在使用对象语法。

如果我希望显示地址的单元格组合完整地址,我是这样写的:

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

我基本上想要显示地址,因为地址通常会显示(例如123 This street,City,AZ,55555)

理想情况下,它将以逗号分隔,因为地址将被写入。所以我相信我现在不能正确地做到这一点。

7 个答案:

答案 0 :(得分:7)

试试这个:

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

花括号允许您将PHP对象引用括在一个字符串中(而不是必须使用连接)。

答案 1 :(得分:3)

每次要从中引用属性时,都需要使用$post->echo的不同参数将连接字符串。因此,如果您想要显示这些属性,请用逗号分隔:

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

答案 2 :(得分:3)

如果post对象中的项目顺序是您需要的顺序:

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

如果没有,您需要按照许多其他答案进行概述,例如:

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

如果您输出到HTML,则缺少重要的一点:

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

RESP:

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

答案 3 :(得分:3)

就个人而言,我的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魔术方法,输出以逗号分隔的地址组件。

答案 4 :(得分:3)

你可以简单地创建变量变量:

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

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

检查pastebin上的完整代码:http://pastebin.com/MMpSVjNv

答案 5 :(得分:2)

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

。-operator在php中连接字符串。 你应该看一下php教程来解决这个问题:http://tut.php-quake.net/en/

答案 6 :(得分:2)

关闭,但不完全:

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

echo可以采用多个以逗号分隔的参数。另一种方法是使用多个echo调用。