微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP DataStructures按属性查找对象

如何解决PHP DataStructures按属性查找对象

PHP中,我需要在集合(向量)中查找对象索引,如何查找具有特定属性的对象($ object-> name =“ name:3”)? 有什么建议吗?

这是示例:

<?PHP
//simple class
class tip {
    public $ID;
    public $name;
}

$col =  new \Ds\Vector();

//create few objects in $col
for ($i=0;$i<5;$i++) {
    $o = new tip();
    $o->ID = $i;
    $o->name = "name: $i";
    $col->push($o);
}

var_dump($col);

//search should return 4 (as 4 object in vector is object with name: "name: 4" but it returns false
var_dump($col->find("name: 3"));
?>

解决方法

这就是我在@MarkusAO的帮助下解决此问题的方式,首先这是对OP的错误使用,因为@MarkusAO声明使用vector作为存储设备... 这是示例:

std::map<int,A> m; m.insert(std::make_pair(0,A(7))); m.insert(std::make_pair(1,A(3))); m.insert(std::make_pair(2,A(1)));  std::vector<A> vec;

std::cout << "Transform" << std::endl;

vec.reserve(m.size());
std::transform(m.begin(),m.end(),std::back_inserter(vec),// changed the key type and return type.
     [](const std::pair<const int,A> & p)->const A& { return p.second; }); 

std::cout << "for_each" << std::endl;
vec.resize(0);
vec.reserve(m.size());
std::for_each(m.begin(),// changed the key type.
    [&vec](const std::pair<const int,A> & p) { vec.push_back(p.second); });

std::cout << "START\n";
vec.resize(0);
vec.reserve(m.size());

for (const auto & p : m) {
    vec.emplace_back(p.second);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。