PHP:对象上的array_map
在PHP中,我们常常会使用array_map()函数来创建一个新数组,将一个数组中的每个元素都调用某个函数,从而返回一个新数组。不过,当我们需要在对象上调用时,array_map()函数返回的是对象而不是数组,这使得我们不能直接对原对象调用函数。因此,我们可以使用array_map()在对象上创建一个函数,从而实现对对象的遍历和调用。
下面是一个简单示例:
class ExampleObject {
private $name;
private $number;
public function __construct($name, $number) {
$this->name = $name;
$this->number = $number;
}
public function printInfo() {
echo "姓名:$this->name\n";
echo "数字:$this->number\n";
}
public function findName($name) {
foreach ($this as $item) {
if ($item == $name) {
return $item;
}
}
return null;
}
public function findNumberByProperty() {
foreach ($this as $item) {
if ($item->getName() == '张三') {
return $item->getNumber();
}
}
return null;
}
}
$example = new ExampleObject('张三', 27);
// 对象上使用array_map函数
$arrayObj = $example->array_map(function ($item) {
return "姓名: " . $item;
});
$nameStrings = array_values(array_map(function ($item) {
return $item;
}, array($example->findName('张三')));
// 输出结果
foreach ($arrayObj as $name) {
echo $name.PHP_EOL;
}
foreach ($nameStrings as $name) {
echo $name.PHP_EOL;
}
上述代码中,我们在ExampleObject这个类的对象上调用array_map()`函数,将对象转换成数组,将对象数组中的每个元素调用另一个函数,从而实现对对象的遍历和调用。其中,findName()是一个用于获得当前对象的属性数组中的值的方法,findNumberByProperty()是一个用于获得当前对象的属性数组中的值的方法,并返回当前对象中属性数组中的值,从而实现对对象的遍历和调用,并最终输出结果。
这就是在对象上调用array_map的实现方法。
领取专属 10元无门槛券
手把手带您无忧上云