有没有办法访问传递给ArrayObject的布尔值的细节,以便与数组的每个元素进行比较?
我已经开始研究PHP的数据框架,并且似乎已经达到了这个目标。
示例代码:
<?php
class DataFrame extends ArrayObject {
public function offsetGet($key) {
if (is_bool($key)) {
echo "Passed a boolean: {$key}\n";
} else {
echo "Comparing: {$key}\n";
}
}
}
只是一个简单的代码案例:
$df = new DataFrame();
$df['hello'] = 'world';
$df[$df['hello'] == 'world'];
将输出(对于任何非空,非假,非零的比较):
Comparing: hello
Passed a boolean:
否则:
Comparing: hello
Passed a boolean: 1
无论哪种方式,我都无法使用这种方法进行比较。
我是否可以实现一个接口以获得对布尔比较方法的访问权限,或者是这样的PHP无法实现的?无论哪种方式,这只是可以采取的许多其他方法的糖,没有经典的数据帧语法将是一种耻辱。
答案 0 :(得分:0)
如果您的意思是R-like数据帧语法,我很遗憾地说PHP本身并没有公开这样的接口,但没有什么能阻止您实现它。
您最接近的是使用array_filter
功能。
对于PHP 5.3+,你可以这样做:
$data = array('hello', 'world');
$selected = array_filter($data, function($val) {
return $val === 'world';
});
var_dump($selected); // will output: array(1) { 0 => world }