2014-07-15 3 views
0

Я пытаюсь запустить функцию, которая получает информацию из БД и возвращает массив значений, поэтому я могу извлечь ее на странице.Array ([0] => Array ... проблемы с извлечением значений массива

Внутри функции, после моего запроса у меня есть следующий код:

$example_array = array(); 
while ($row = mysql_fetch_assoc($query) { 
    $example_array[] = $row; 
} 
return $example_array; 

И заканчивает свою функцию вне этого, у меня есть это:.

extract($example_array); 

И я полагаю, я мог бы затем прямо echo любая из переменных, которые были ранее в $example_array, например. <?= $example_var ?>, но они не содержат никаких данных.

Запуск print_r($example_array); дает массив, который выглядит следующим образом:

Array ([0] => Array ([example_var] => Example String)) 

Запуск этого кода заставляет меня думать, мой массив как-то «потерял» в первом значении другого массива ([0]), и как таковой не является извлечение правильно.

Неправильно ли я добавил данные к этому начальному $example_array?

+1

Что ваш '$ extract' выглядеть? –

+0

Small опечатка в вопрос, извините. – mpdc

ответ

1

Когда вы $example_array[] = $row;, вы назначаете текущую строку в новый индекс $example_array. Если вы хотите получить доступ к нему, как $example_array['row_name'], вы должны назначить это следующим образом:

$example_array = $row; 

Но когда вы сделаете это, $example_array будут перезаписаны, пока он не достигнет последней строки (что означает, что $example_array будет всегда содержать последнюю строку из запроса). Если вы просто хотите, первый ряд, вы можете сделать это и пропустить весь while цикл:

$example_array = mysql_fetch_assoc($query); 
+0

Идеально, работал как шарм. Спасибо за ваше объяснение. – mpdc

+0

@mpdc теперь я думаю об этом, было бы гораздо проще просто '$ example_array = mysql_fetch_assoc ($ query);', который получит первую строку и сохранит ее в '$ example_array' – Jonan

+0

@mpdc, если бы вы пожалуйста, примите мой ответ, если он вам поможет? – Jonan

1

Вопрос заключается в том, что mysql_fetch_array имел бы в виду $row['row_name'].

Как вы добавили $ row к массиву $ example_array, теперь вам нужно получить к нему доступ через свой идентификатор массива, например;

$example_array[0]['row_name'], $example_array[1]['row_name'] т.д.

Что именно вы пытаетесь достичь? Может быть легче предложить помощь, если мы знаем.

1

Может быть:

$example_array = array(); 
while ($row = mysql_fetch_assoc($query) { 
    array_push($example_array, $row['exemple_var']); 
} 
return $example_array; 
+0

PHP не работает, как и большинство языков, если вы выполняете '$ array []' он будет иметь тот же результат, что и 'array.push()' на многих других языках. – Jonan

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