работа с массивом через foreach

77
26 февраля 2022, 20:10

Стоит задача вывести из БД таблицу с заголовком. Для отображения заголовка использую foreach, но если использовать такой код:

echo "<tr>";
foreach ($row as $key => $value) {
   echo "<td>";
   echo $key;
   echo "</td>";
}
echo "</tr>";

Происходит задвоение заголовка 0 имя_поля_0 1 имя_поля_1 2 имя_поля_2. попробовал вывести такой код

echo "<tr>";
foreach ($row as $key => $value) {
    echo "{$key} => {$value}" . "<br />";
}
echo "</tr>";
Результат будет
0=> значение_0
имя_поля_0 => значение_0
1=> значение_1
имя_поля_1 => значение_1
2=> значение_2
имя_поля_2 => значение_2
3=> значение_3
имя_поля_3 => значение_3

как сделать, чтобы выводился только ключ ассоциативного массива или только индексы?

Answer 1

В формировании переменной $row $row = oci_fetch_array($stid, OCI_BOTH); Использовал режим OCI_BOTH, что означает использование ассоциативного и числового массива. Необходимо использовать OCI_ASSOC или OCI_NUM.

Всем спасибо, помогли разобраться, натолкнули на мысль.

Answer 2

Если речь идет об обычной нумерации полей, то можно было воспользоваться и обычным инкрементом. Например, следующим образом:

<tr>
<? 
$i = 0;
foreach ($row as $value) {
  $i++; 
  ?><td><span id="<?=$value.$i;?>"><?=$i;?></span></td><?
}?>
</tr>

Если прямо важно, чтобы были значения ассоциативного массива, то для начала проверить везде ли у пунктов массива есть ключи? Если их нет, то и нет смысла заморачиваться, хотя совет по поводу режима OCI_BOTH тут кстати.

И следи за стилем. Стиль кода ужасен. Почему эти echo и в них голимый html? Почитай инфу по стилю кодирования....

Answer 3

Если нельзя повлиять на данные в $row то так:

echo "<tr>";
foreach ($row as $key => $value) {
    if(is_numeric($key)){ // - для чисел 
    // if(!is_numeric($key)){ // - для не чисел
        echo "<td>";
        echo $key;
        echo "</td>";
    }
}
echo "</tr>";
READ ALSO
Названия тестов + нумерация в codeception

Названия тестов + нумерация в codeception

Не могу найти в документации имеется ли возможность в codeception делать нумерованный вывод тестов в консоль, а так же не могу найти как менять...

132
Вывод подрубрики через шорткод Wordpress

Вывод подрубрики через шорткод Wordpress

Помогите пожалуйста Нужно вывести подрубрики на страницу основной рубрики которая сделана через ElementorМожно ли вывести как то через шорткод...

60
psr-2 и phpStorm

psr-2 и phpStorm

есть перевод https://svyatoslavbiz/misc/psr_translation/ есть то, что делает phpStorm

76
стиль кодирования

стиль кодирования

как правильно организовать работу? 1пишу как привык, потом скриптом поправить 2

193