2014-09-15 17 views
1

Я использую схему CodeIgniter. Я отправляю массив в свое представление, но я не мог получить массив в моем представлении.Определить, сколько существует массива?

Это мой код контроллера:

public function edit($id) 
{ 
    $record = $this->Start_model->get_entry($id);//receiving array from model 
    $this->load->view('edit',$record);//send array to my view 
} 

Это мой массив на контроллер, который я посылаю:

Array 
(
    [0] => Array 
     ([id] => 1 [name] => Hamza [age] => 20 [address] => audit and account [phone] => 03000000000 ) 
) 

Но когда я называю этот вид массива я получаю эту ошибку:

Undefined variable: record

Это, как я получаю мой массив в виде:

<?php 
echo '<pre>'; 
print_r($record); 
echo '</pre>'; 
?> 

Теперь я знаю, что я посылаю массив на мой взгляд, но Я хочу знать, если есть массив с моей точкой зрения или нет. Я могу получить запись по другому методу, но я думаю, что это не очень хорошая практика. Так кто-нибудь может помочь мне, как я могу определить, есть ли массив на мой взгляд?

+0

Мой вопрос об обнаружении массива на мой взгляд. Я хочу знать, как массив подходит ко мне. как я могу также отладить его. – Xitas

+1

Пожалуйста, см. Мое последнее редактирование – Steve

+2

@TheRealHamza wait, ссылаетесь ли вы на нечто вроде глобального родительского массива, который хранит данные внутри представления, когда он импортируется из контроллера? я не думаю, что вы можете проверить, так как я думаю, что 'extract()' был использован – Ghost

ответ

2

Codeigniter извлекает массив, переданный в целях, создавая переменные на основе ключей из массив. Для того, чтобы работать, как вы хотите, передать массив с ключом или record и значение вашего массива:

public function edit($id) 
{ 
    $data = array('record' => $this->Start_model->get_entry($id)); 
    $this->load->view('edit',$data);//send array to my view 
} 

Тогда это будет работать на ваш взгляд:

<?php 
echo '<pre>'; 
print_r($record); 
echo '</pre>'; 
?> 

так, как вы в настоящее время посылая данных, он будет извлекаться в отдельные переменные для каждого элемента в массиве, однако, поскольку ваш массив численно индексируется, а правила имен переменных php предотвращают имена числовых переменных, вы не можете получить доступ к данным.

+0

Спасибо @Steve, но можете ли вы рассказать мне, как я могу видеть существующий массив на мой взгляд? – Xitas

+0

@ TheRealHamza Вы не можете, пожалуйста, см. Мое редактирование для почему – Steve

+1

@TheRealHamza Однако, если вы сделаете это небольшое изменение, вы можете получить доступ к массиву, как вы ожидали, - через переменную '$ record' – Steve

3

В контроллере, отправить родительский массив вместо:

public function edit($id) 
{ 
    $data = array(); 
    $data['record'] = $this->Start_model->get_entry($id); // provided this is not empty 
    $this->load->view('edit', $data); 
} 

Затем на ваш взгляд:

foreach($record[0] as $key => $value) { 
    echo $value['id']; 
    // the rest blah blah 
} 
Смежные вопросы