如何从多维数组中获取值

时间:2015-10-02 19:44:56

标签: php arrays codeigniter

我想从包含所有数据字段的数组中获取一个数据库字段,这里是m代码:

public function show($id)
    {

        $data['product'] = $this->products_model->get_product_by_id($id);

        foreach ($data['product'] as $row) {
        $seller = $row['seller_id'];
        }

        $data['seller_name'] = $this->members_model->get_members_by_id($seller);

        if (empty($data['product']))
        {
                show_404();
        }

        $data['main_content'] = 'pages/show';
        $this->load->view('templates/template', $data);
    }

我认为代码是自我解释我想要的是从产品数据库中获取 seller_id 字段以使用它来抓取<来自成员数据库的strong> seller_name 字段。我认为它不起作用的代码就是这部分:

foreach ($data['product'] as $row) {
        $seller = $row['seller_id'];
    }

它给了我这个错误:

  

严重性:注意

     

消息:数组到字符串转换

4 个答案:

答案 0 :(得分:2)

Severity: Notice

Message: Array to string conversion

此消息表示您正在获取一个数组,并且您将其视为字符串,因为您将其作为字符串传递。

所以这里是条件,要么你在$data['product']得到多个值而且是的,这是正确的,因为你在那里应用foreach。所以以这样的方式进行查询,它只返回products表中的一行那将是解决方案

答案 1 :(得分:2)

您不需要foreach循环,只需检查!empty($data['product'])并使用$data['product']['seler_id']$data['product'][0]['seller_id']取决于您的模型代码。因此,正如您想要ID的精确产品一样,您的代码应如下所示:

public function show($id)
{
    $data['product'] = $this->products_model->get_product_by_id($id);

    if (empty($data['product']))
    {
        show_404();
    }
    else
    {
        $seller_id = $data['product']['seller_id'];
        $data['seller_name'] = $this->members_model->get_members_by_id($seller);
        $data['main_content'] = 'pages/show';
        $this->load->view('templates/template', $data);
    }
}

这里有一个通知,因为你有表之间的关系,模型中的查询应该包含JOIN部分,你可以在一个查询中获得卖家详细信息。基本上,您的$ data ['product']将同时或在一个查询中包含名称(以及卖家表中的其他详细信息)。检查this link

答案 2 :(得分:1)

使用array_column获取一个数组中的所有seller_id。就像var_dump array_column ( $data, 'seller_id' )

答案 3 :(得分:0)

很抱歉伙计问题在于查看页面,这就是我在视图页面中使用数组的方式,它确实有效:

foreach($seller_name as $row){
    echo'<p class="product-price">'.$row['user_name'].'</p>'; 
    echo'<p class="product-price">'.$row["phone_number"].'</p>';
}