如何解决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 举报,一经查实,本站将立刻删除。