2015-10-02 4 views
1

Я хочу, чтобы захватить одно поле базы данных из массива, который содержит все поля данных здесь м Код:Как захватить значение из многомерного массива

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 поля из продуктов базы данных, чтобы использовать его, чтобы захватить SELLER_NAME поля из членов баз данных. Код, который я считает, что это не работает эта часть:

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

Это дает мне эту ошибку:

Severity: Notice

Message: Array to string conversion

+0

Что делает код? Вы получаете сообщения об ошибках? – mkasberg

+0

Не знаю, что возвращает $ this-> products_model-> get_product_by_id ($ id), но если он возвращает строку данных из базы данных в виде массива, тогда вы должны установить $ seller = $ data ['product' ] [ 'seller_id']; – ckimbrell

+0

Попробуйте это, после этой строки: 'print_r ($ data ['product'])'. Я думаю, что структура массива - это не то, что вы думаете. – mkasberg

ответ

0

Извините, ребят проблемы была с страницей зрения, Вот как я использовал массив на странице просмотра и сделал работу:

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

использование array_column получить все seller_id «S в одном массиве. точно так же, как var_dump array_column ($data, 'seller_id').

+0

Извините, я не знаю, что вы имеете в виду, можете ли вы объяснить это более подробно? – user2682025

+0

вы хотите получить 'seller_id', поэтому я помог вам получить все' seller_id' в отдельном массиве, если вы хотите, чтобы это было условно пройти цикл. –

+0

Спасибо, что я искал array_column, и я попробовал это: '$ seller = array_column ($ product, 'seller_id');' но он дал мне ту же ошибку – user2682025

2
Severity: Notice 

Message: Array to string conversion 

Это сообщение означает, что вы получаете массив, и вы рассматриваете его как строку, поскольку вы передаете его как строку.

Таким образом, это условие, либо вы получаете несколько значений в $data['product'], и да, это правильно, потому что вы применяете foreach там. Поэтому сделайте свой запрос таким образом, чтобы он возвращал только одну строку из таблицы продуктов. быть решением

+0

Спасибо, я уверен, что он получает только одну строку, потому что, как вы видите в коде выше, функция имеет параметр $ id, поэтому она получает только одну строку и ее тестирование, поэтому я очень уверен в этом. – user2682025

+2

Да, вы правы '$ id' передается как 1 параметр за раз, но я говорю о' $ data ['product'] = $ this-> products_model-> get_product_by_id ($ id); 'что означает из этой модели связь взамен вы извлекаете записи в массиве, когда вы храните возвращаемые значения в массиве '$ data ['product']'; – Exception

2

Вам не нужен Еогеасп цикла, просто проверить, если !empty($data['product']) и использовать $data['product']['seler_id'] или $data['product'][0]['seller_id'] зависит, как ваша модель c ода. Итак, как вы хотите, точный продукт по идентификатору ваш код должен выглядеть так:

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); 
    } 
} 

Одно уведомление здесь, так как у вас есть отношения между таблицами, запрос в модели должны содержать РЕГИСТРИРУЙТЕСЬ раздел и вы могли бы прибудете продавец детали в один запрос. В принципе, ваш $ data ['product'] будет содержать имя (и другие данные из таблицы продавцов) в одно и то же время или в одном запросе. Проверьте this link.

Смежные вопросы