3

オブジェクトの配列$myRowset->toArray();を取得したいので、探していません。

私がやりたいのは$myRowset、オブジェクトの配列とマージできるようにすることです。

$myOtherArray = [new Foo(), new Bar()];
$array = array_merge($myRowset, $myOtherArray);

Zend_Db_Table_Rowsetでは、それは不可能です。オブジェクトの配列が必要なため、使用$myRowset->toArray();も機能しません。

編集-私が望むことを実行するコードの例ですが、それが存在する場合はより良い解決策を探しています:

// Convert the Zend_Db_Table_Rowset to an array of Zend_Db_Table_Row
$myRowset = $dbTable->fetchAll();
$rowArray = array();
foreach ($myRowset as $row) {
    $rowArray[] = $row;
}

// Merge with other array of objects
$myOtherArray = [new Foo(), new Bar()];

$finalArray = array_merge($rowArray, $myOtherArray);
4

2 に答える 2

3

これが私の「最もクリーンな」ソリューションです:Zend_Db_Table_Rowsetをオーバーライドします

class My_RowSet extends Zend_Db_Table_Rowset {

    public function rowArray() {
        $rowArray = array();
        foreach ($this as $row) {
            $rowArray[] = $row;
        }
        return $rowArray;
    }

}

およびZend_Db_Table:

abstract class My_Db_Table extends Zend_Db_Table {

    protected $_rowsetClass = 'My_RowSet';

}

今私はすることができます:

$myRowset = $dbTable->fetchAll();
$rowArray = $myRowset->rowArray();
于 2012-06-25T17:56:59.883 に答える
1

使用できます

/** @var Zend_Db_Table_Row[] $rows */
$rows = iterator_to_array($rowset)
于 2021-09-27T14:31:43.120 に答える