这是我的PHP代码:
class person {
public $name;
public $SE;
private $SD;
function __construct ( $n, $s1, $s2 ) {
$this->name = $n;
$this->SE = $s1;
$this->SD = $s2;
}
}
$Obj = new person ( "ExampleName", 5, 5 );
我需要为每个人创建单独的div,并在这些div中包含他们的名字。我的主要问题是,在创建这些div后,我需要以特定的方式对它们进行排序(这对你来说并不重要),这要求每个div都有一个与原始人相关联的ID创建了。
我能够从名单列表中创建div,但不能从对象创建div。 所以:
我需要一种方法来使用foreach循环来根据每个对象(人)创建div。
我需要与这个人相关联(与之相关联)的这些div。
感谢您的帮助
答案 0 :(得分:5)
不确定与该人相关联的div的含义,但对于第一个问题,这应该有效。
假设您有一个名为$ objs
的对象数组foreach($objs as $obj)
{
echo "<div>".$obj->name."</div>";
}
答案 1 :(得分:2)
我不确定这是你正在寻找的,但这应该有效:
// create an array of persons, I'm assuming that SE or SD is
// unique for each object
$persons = (
new person("Allan", 1, 1);
new person("Bobbo", 2, 2);
new person("Cicci", 3, 3)
);
可以使用usort()
按名称对对象进行排序:
usort($persons, function($a, $b) {
return $a->name > $b->name;
});
// loop through each object and output a div
// notice that the id will be unique and based on
// the `SE` member of the object, you can then reference
// a specific div from javascript $('#person-1') etc
foreach ($persons as $person) {
print '<div class="person" id="person-' . $person->SE . '">' . $person->name . '</div>';
}
使用jQuery
,您可以根据唯一ID获取对象:
$(document).ready(function() {
$('.person').click(function() {
$.ajax('object.php', {
type: 'post',
data: 'id=' + $(this).attr('id').substr(7),
dataType: 'json',
success:function(obj) {
alert('You clicked on ' + obj.name + ' ' + obj.SE + ' ' + obj.SD);
}
});
});
});
您将在$persons
数组中搜索以找到具有相应SE
(或您希望用作唯一标识符)值的对象:
// object.php
if (isset($_POST['id'])) {
$id = intval($_POST['id']);
foreach ($persons as $person) {
if ($person->SE == $id) {
// return json object
print json_encode($person);
break;
}
}
}