-3

私は、テーブル内の 1 つの列 (ページ) からのみ、各行から値の配列を返す必要がある 1 つの小さなプロジェクトに取り組んでいます。

私の方法は次のようになります。

public static function getMainArray() {
  $conn = parent::connect();
  $sql = "SELECT page FROM " . TBL_PAGES . " WHERE level = 0";

  try {
    $st = $conn->prepare( $sql );
    $st->execute();
    $pages = array();
    foreach ( $st->fetchAll() as $row ) {
      $pages[] = new Page( $row );
    }     
    parent::disconnect( $conn );
    return array( $pages);
  } catch ( PDOException $e ) {
    parent::disconnect( $conn );
    die( "Query failed: " . $e->getMessage() );
  }
}

この配列を印刷すると、

$pages = array();
$pages = Page::getMainArray();
print_r($pages);

出力は次のとおりです。

Array ( 
[0] => Array ( 
  [0] => Page Object ( [data:protected] => Array ( 
    [id] => 
    [page] => home
    [url] => 
    [level] => 
    [parent] => 
    [nazov] => 
    [title_navi] => 
    [title_meta] => 
  ) 
)
  [1] => Page Object ( [data:protected] => Array ( 
    [id] => 
    [page] => about
    [url] => 
    [level] => 
    [parent] => 
    .
    .
    .

出力が次のようになるように、何を変更する必要がありますか。

Array ( 
  [0] => home
  [1] => about
  [2] => orders
  [3] => info
  [4] => contact
)
4

2 に答える 2

0

無駄なコードを一切使わずに、どうあるべきか

public static function getMainArray() {
  $conn = parent::getConnection();
  $sql = "SELECT page FROM " . TBL_PAGES . " WHERE level = 0";
  $st = $conn->prepare( $sql );
  $st->execute();
  return $st->fetchAll(PDO::FETCH_COLUMN, 0);
}

parent::getConnection()メソッドが呼び出されるたびに接続する必要はありませんが、常に既に開いている接続を返すことに注意してください。parent::disconnect()ここでは絶対に使用しないでください。try..catchと同様に。

于 2013-07-02T11:03:04.067 に答える