创建与对象关联的div

时间:2015-02-04 09:51:50

标签: php html class object

我早些时候问了一个类似的问题,但我找不到任何可以帮助我的东西了。我现在已经将我的代码更新为有效的东西,但我现在完全卡住了。

这是我的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。 所以:

  1. 我需要一种方法来使用foreach循环来根据每个对象(人)创建div。

  2. 我需要与这个人相关联(与之相关联)的这些div。

  3. 感谢您的帮助

2 个答案:

答案 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;
     }
   }
}