Немогу Вывести Элемент Массива (RedBeanPHP)

194
05 октября 2018, 13:10

Есть Код:

$find = R::findAll('task','NAME LIKE ?', ['%'.$q.'%']);
    if($find){ // Если Массив не Пустой
        foreach($find as $res){
            echo $res['NAME'];
        }
    }

var_dump($res); object(RedBeanPHP\OODBBean)#15 (10) { ["properties":protected]=> array(11) { ["ID"]=> string(1) "1" ["NAME"]=> string(127) "Написать 4 положительных комментария в Instagram'e и пролайкать эти 4 поста" ["DESCR"]=> string(224) "Приветствую я начинающий Блогер, веду свой блог в Instagram'e По скольку сейчас развелось очень много недо блогеров, пропиар... " ["AUTHOR"]=> string(24) "Пользователь" ["CATEGORY"]=> string(10) "Клики" ["PRICE"]=> string(4) "7500" ["WATCHS"]=> string(2) "16" ["RATING"]=> string(1) "2" ["COMPLETS"]=> string(2) "11" ["NOT_COMPLETS"]=> string(1) "2" ["CREATE_DATE"]=> string(19) "2018-06-14 09:20:06" } ["__info":protected]=> array(5) { ["type"]=> string(4) "task" ["sys.id"]=> string(2) "id" ["sys.orig"]=> array(11)

Проблема вот в чем: Я пытаюсь произвести поиск по средством Библиотеки RedBeanPHP методом findAll() все хорошо, поиск сработал но проблема в том что когда я пытаюсь вывыести Элемент массива по Его Ключу(в моем случае это NAME), Ничего не Выводится...

Answer 1

У вас $find имеет свойство объекта (object), а нужно (array).

Если вы хотите исправить, то выводите:

$res->NAME

Но, если хотите в формате:

$res['NAME']

То сделайте так:

$find = R::findAll('task','NAME LIKE ?', ['%'.$q.'%']);
$find = (array) $find;
if ($find) {
    foreach ($find as $res) {
        echo $res['properties']['NAME'];
    }
}
Answer 2

Проблема решилась. Просто прошелся 2 раза циклом foreach и все.

      foreach ($find as $res){
            $res = (array) $res;
            foreach($res as $r){
                $r = (array) $r;
                echo $r['NAME'];
            }
Answer 3

Я так понимаю у вас PHP<7 версии. В таком случае, если вы хотите обращаться к объекту OODBBean как к массиву, вам необходимо его конвертировать в массив.

$find = $find->export();

И дальше обращаться к нему как к массиву.

p.s.

обратное преобразование для одной строки

$res = R::convertToBean('task', $find);

или для всего массива

$res = R::convertToBeans('task', $find);
READ ALSO
count(): Parameter must be an array or an object that implements Countable (Параметр должен быть массивом или объектом, который реализует счет в)

count(): Parameter must be an array or an object that implements Countable (Параметр должен быть массивом или объектом, который реализует счет в)

Дорогие коллеги объясните пожалуйста мне одну вещь, в метод count() передаю объект (мне это так казалось, а как оказалось там был Json ответ гугл...

208