dataframe — PHP передает логическое значение ArrayObject для внутреннего сравнения

Есть ли способ получить доступ к деталям логического объекта, переданного в 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

Решение

Если вы имеете в виду R-подобный синтаксис фрейма данных, мне жаль говорить, что 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 }
0

Другие решения

Других решений пока нет …