PHP将布尔值传递给ArrayObject以进行内部比较

时间:2015-06-02 17:46:13

标签: php dataframe

有没有办法访问传递给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无法实现的?无论哪种方式,这只是可以采取的许多其他方法的糖,没有经典的数据帧语法将是一种耻辱。

1 个答案:

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