2015-04-27 2 views
0

У моего db есть две записи с несколькими полями (например, partnerName, image_url и т. Д.). Цикл foreach, вставленный ниже, отлично работает, возвращая два значения «partnerName» из двух записей.
Теперь я хочу только вернуть значение из текущей записи.foreach loop - возвращает только одну запись

я заменил следующую строку: <?php foreach($this->challengenames as $k=>$challengename) { ?>

с <?php $challengename = $this->challengenames[0]; ?> и избавился от заканчивающегося PHP кронштейна. Это избавляет от цикла, но я теряю индекс k, поэтому я не получаю никаких значений. Любые советы о том, как изменить этот цикл, чтобы сохранить индекс k, но вернуть только значение для текущей записи?

Большое спасибо!

<div id="defaultcontainerwrapper" class="maxwidth"> 
<?php foreach($this->challengenames as $k=>$challengename) { ?> 
    <header> 
     <h1> 
      <div class="list"> 
       <span>Welcome to </span><?php echo $challengename['partnerName']; ?><span>'s Beat Waste Challenge!</span> 
      </div> 
     </h1> 
    </header> 
<?php } ?> 
</div> 
+0

'0' - это новый' $ k';) – Havelock

+2

, почему вы отреагировали? http://stackoverflow.com/questions/29886181/foreach-loop-want-to-return-only-one-record-depending-on-page, пожалуйста, прочитайте http://stackoverflow.com/help/no-one-answers – Sean

+0

Извините Шон. Новые здесь и просто узнают о сайте. – ian

ответ

0

$ к является ключом $ challengname начиная с 0

foreach($this->challengenames as $key => $value) { 
    $key[0] = $value['partnername']; 
    $key[1]=$value['image_url']; 
} 
0

Что вы имеете в виду текущей записи? Поскольку я предполагаю, что $this->challengenames ссылается на вывод, возможно, fetchAll() в PDO, возвращая массив строк базы данных (как ассоциативные массивы). Таким образом, используя $this->challengenames[0], вы получаете возвращаемую первую строку (на основе набора заказов в SQL-запросе).

Индекс $ к в вашем решении относится к 0. В любом случае вы даже не используя $ к в пределах вашей петли оо

Если вы хотите получать возврат только один использование строки() или mysql_get_row() (не рекомендуется) или эквивалент. И ваш SQL запрос должен иметь LIMIT 1

0

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

select * from <your table> orderby DESC

теперь вам не нужно запускать цикл использовать только 0-й индекс, чтобы получить последние данные

+0

Tx Карвин. Это небольшой набор данных, и у меня уже есть все переменные, просто пытаясь разобраться в цикле. Я думаю, что я использую ' challengenames [$ k] = current ($ this-> challengenames); ?> 'Теперь он возвращает только первое значение, но я хочу, чтобы он возвращал значение из записи, которую я использовал для перехода на эту страницу. Не уверен, что это имеет смысл, но я использовал значение «challengeId», чтобы перейти на эту страницу, и теперь я хочу использовать это значение «challengeId» для получения других значений на этой странице. Я уверен, что я об этом поступил неправильно, но я очень новичок в этом. Tx снова! – ian

1

используйте следующий код -

<div id="defaultcontainerwrapper" class="maxwidth"> 
    <header> 
     <h1> 
      <div class="list"> 
       <span>Welcome to </span><?php echo $this->challengenames[0]['partnerName']; ?><span>'s Beat Waste Challenge!</span> 
      </div> 
     </h1> 
    </header> 
</div> 
Смежные вопросы