У меня есть массив со значением в двух полях, и я хочу выполнять эхо отдельно

#php

#php

Вопрос:

У меня есть и id, и поле name в переменной массива, как я могу отобразить их отдельно в исходном html.

 foreach($iterator as $key=>$value)
  

Переменная $value имеет поля id и name, я хочу отобразить их по отдельности, например

 <div>id here</div>   <div>name here</div>
  

Я пробовал это

     $hier = new hier;
    $iterator = $hier->Pathroot($name);
    try {

        foreach($iterator as $key=>$value)
            {

    echo '<div>' . $value['id'] . '</div><div>' . $value['name'] . '</div>'

    }
  

Я воспользовался функцией recursiveiterator, потому что я больше не использую свою старую модель sql, поэтому мне больше не нужно использовать recursiveiterator.

Var_dump

 array(1) { [0]=> array(2) { ["name"]=> string(14) "Coloso" ["id"]=> string(1) "1" } } 
  

Комментарии:

1. Итак, что вы уже пробовали?

2. В дополнение к комментарию @Oli, не могли бы вы определить $iterator массив? Это массив массивов или массив со значениями определенного формата?

3. Переменная $value имеет поля id и name Означает ли это, что у вас многомерный массив? Я думаю, вам определенно следует прочитать php.net/manual/en/language.types.array.php

4. @OLi Я попробовал то, что описано выше, и оно выводит только первый символ поля name и идентификатор, но идентификатор, который приходит, я предполагаю, повторяется с последнего div. это означает, что только поле name повторяет имя и значение id ….. я получаю <div>’.$value[‘id’].'</div> он все равно вернет первый символ поля name и идентификатор.

5. @thomas и @felix это многомерный массив, я, вероятно, должен сослаться на $ iterator [0][‘id’] Я думаю, что это многомерный массив, подобный array (1) { [0] => array (2) { [«name»] => string(14) «Coloso» [«id»] => string (1) «1» } }

Ответ №1:

вы пробовали очевидное:

 echo "<div>$key</div><div>$value</div>";
  

Комментарии:

1. Дракон внутри значения — это то место, где находятся два значения, которые я хочу отобразить.

Ответ №2:

Итератор содержит массив массивов, подобных этому:

 array(
  // counter => array(id, name)
  0 => array("1", "john"),
  1 => array("2", "jane")
  etc...
)
  

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

 foreach ($iterator as $index => $value) {
    // loop 1: index=0; value=array(id=1, name=john)
    // loop 2: index=1; value=array(id=2, name=jane)
    // loop 3: index=2; counter > count(array) - break
}
  

Поэтому, если вы используете $value , вы должны получить нужный вам результат.

Комментарии:

1. Я думаю, что это многомерный массив, подобный array (1) { [0] => array (2) { [«name»] => string(14) «Coloso» [«id»] => string (1) «1» } }

2. Я не использовал эти классы SPL (если вы можете понять php.net /~helly/php/ext / spl это может вам помочь) — но нужно ли вам обернуть RecursiveArrayIterator в recursiveiteratorлитератор? Похоже, вы можете получить то, что хотите, из ArrayIterator.

3. Также, если вы сделаете это, вы можете использовать $ key и $ value, как предложил Дагон. Что дает var_dump текущего $ key и $ value?

4. Можете ли вы объяснить, что массив дампа var выглядит как array(1) { [0] => array (2) { [«name»] => string(14) «Coloso» [«id»] => string (1) «1» } }

5. Это дамп var без функции рекурсивного итератора, я его удалил

Ответ №3:

 <div><?php echo $value['id'] ?></div>    <div><?php echo $value['name'] ?></div>
  

Комментарии:

1. это многомерный массив, я предполагаю, что это var_dump, я думаю, что это многомерный массив, такой как array (1) { [0] => array (2) { [«name»] => string(14) «Coloso» [«id»] => string (1) «1» } }

2. @fello: Конечно, но $value это уже переменная итерации.

Ответ №4:

Вам нужно выяснить, имеете ли вы дело с ассоциативным массивом или с неассоциативным массивом.

Ассоциативный массив сопоставляет ключи со значениями. В вашем коде if $value является ассоциативным массивом:

echo '<div>' . $value['id'] . '</div><div>' . $value['name'] . '</div>';

Сработало бы! (кстати, в вашем коде отсутствует конечная точка с запятой, но я предполагаю, что это просто ошибка вставки).

Если нет, $value это просто неассоциативный массив, поэтому вам нужно создать другой цикл для печати значений:

 foreach($iterator as $key=>$value){
    foreach($value as $val){
        echo '<div>'.$val.'</div>';
    }
}
  

Ваш синтаксис предполагает, что вы имеете дело с ассоциативным массивом, но опять же; ваш код будет работать.

В качестве примечания следующие две строки кода эквивалентны (предполагая, что $value снова является ассоциативным массивом):

 foreach($iterator as $key=>$value) echo $value['name'];
foreach($iterator as $value) echo $value['name'];
  

Комментарии:

1. foreach ($ iterator как $value) echo $value[‘name’]; эта строка сделала это, она напечатала значение обоих .. теперь это означает, что это связанный массив? Я взял значение $ key и оставил только значение $, и теперь это сработало. Спасибо

2. Если он правильно напечатал оба значения, $value является ассоциативным массивом, но значение ‘id’, похоже, находится в ключе ‘name’. В любом случае, рад, что это сработало.