2012-09-07 27 views
2

可能重复:
Access array returned by a function in php我必须通过foreach访问此值吗?

我在返回数据的单个项目的阵列的类的功能。

public function retrieveItemData($item_id) { 

    $stmt = parent::query("SELECT title FROM `item_main` WHERE `item_id` = $item_id"); 

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) : 
     $item = array(
      'id' => $item_id, 
      'title' => $row['title'], 
      'url' => $item_id . '/' .$this->generate_seo_link($row['title'], '-') 
     ); 
    endwhile; 

    return $item; 
} 

在别处类叫我像这样

$this->return .= '<td>' . $this->retrieveItemData($rep['source']) . '</td>'; 

$this->retrieveItemData($rep['source'])功能显然是打印“阵”,我怎么可以从这里访问标题密钥?

我已经试过

$this->retrieveItemData($rep['source'])['title'] 

而且

$this->retrieveItemData($rep['source'])->title 

,但没有运气。

+0

尝试print_r的,这样你可以分析阵列更好 – raygo

+0

我最好的猜测,没有看到父::查询()函数将该提取返回一组行。试试'$ this-> retrieveItemData($ rep ['source'])[0] ['title']'。雷戈是对的。 print_r会给你一个很好的见解。 – tommarshall

+0

我得到语法错误,意外的'['如果我那样做@tommarshall –

回答

2
$item_data = $this->retrieveItemData($rep['source']); 

$item_data['title']; 
+0

当然,这工作感谢 –

1

函数调用的数组访问语法:$this->retrieveItemData($rep['source'])['title']是不可能的,直到PHP 5.4。

在早期版本中,您必须使用Trevor答案中的临时变量。所以,你想改变,你打电话给你的函数代码:

$item_data = $this->retrieveItemData($rep['source']); 
$this->return .= '<td>' . $item_data['title'] . '</td>'; 
+0

有趣,谢谢 –