2014-01-29 5 views
0

Я пытаюсь вытащить значение 2D-массива с помощью foreach. У меня этот массив, например:Foreach с 2D-массивами

$ud['prc']['col1'] 
$ud['prc']['col2'] 
.... 

Мой цикл:

foreach ($ud['arc'] as $name => $rank) { 
    if ($name != 'user_ID') { 
     echo "<tr><td>{$name}</td><td>{$rank}</td></tr>"; 
    } 
} 

Этот код по какой-то причине печати первой строки таблицы с номером массива (название как «0» ($ud['prc']['0']) а не его настоящее имя 'col1')

вместо печати меня:

<tr><td>col1</td><td>value of col1</td></tr> 
<tr><td>col2</td><td>value of col2</td></tr> 
<tr><td>col3</td><td>value of col3</td></tr> 

Он печатает это:

<tr><td>0</td><td>value of col1</td></tr> 
<tr><td>col1</td><td>value of col1</td></tr> 
<tr><td>1</td><td>value of col1</td></tr> 
<tr><td>col2</td><td>value of col2</td></tr> 
<tr><td>2</td><td>value of col1</td></tr> 
<tr><td>col3</td><td>value of col3</td></tr> 

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

Я использую это в сочетании с MySQL

Вот мой MySQL код:

$ud['arc'] массив содержит следующее:

$arc_q= mysql_query("SELECT * FROM arc WHERE user_ID='$id'"); 
$arc = mysql_fetch_array($arc_q); 
$ud['arc'] = $arc; 
+0

Этот массив является результатом команды SQL? –

+0

Является ли ваш массив заполнен результатами запроса? –

+0

Показать свой массив со значениями. Также измените ваш цикл foreach '$ ud ['arc']' to '$ ud ['prc']' – user2936213

ответ

0

В его массив приходит из запроса у вас есть два варианта:

1 - Добавление параметра MYSQL_ASSOC в функции «mysql_fetch_array»

2 - Проверка, что ключ целое и пропустить

Я лично предпочитают первый, не создавая больше кода

+0

Thx! он работал отлично! – OfirH

1

Ваш $ud массив не является ассоциативным массивом, так он индексируется числами (0..n) и строками также не только строками ('prc' и т. д.). Таким образом, ваш массив результатов имеет двойные значения.

Если массив генерируется из запроса SQL, то вы должны использовать:

$ud = mysqli_fetch_assoc() вместо mysqli_fetch_array()

+0

Thx! он работал отлично! – OfirH

0

Изменить ваш

$arc = mysql_fetch_array($arc_q); 

в

$arc = mysql_fetch_assoc($arc_q); 

Надежда это помогает.

+0

Спасибо! он работает отлично! Не могли бы вы объяснить мне, что такое различие? – OfirH

+0

@ user3209297 Функция mysql_fetch_assoc, она делает почти то же самое, за исключением того, что она приносит только имя поля, а не индексы. Это то же самое, что добавить параметр MYSQL_ASSOC в mysql_fetch_array –

+0

Получил его. Еще раз спасибо! – OfirH