Мой db имеет две записи с несколькими полями (например, partnerName, image_url и т. Д.). Цикл foreach, вставленный ниже, отлично работает, возвращая два значения «partnerName» из двух записей.
Теперь я хочу только вернуть значение из текущей записи.
Я заменил следующую строку: <?php foreach($this->challengenames as $k=>$challengename) { ?>
с <?php $challengename = $this->challengenames[0]; ?>
<?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>
Используйте следующий код –
<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>
Что вы подразумеваете под текущей записью? Потому что я предполагаю, что $this->challengenames
ссылается на выход из возможно fetchAll()
в PDO, возвращая массив строк базы данных (как ассоциативные массивы). Таким образом, используя $this->challengenames[0]
вы получаете возвращаемую первую строку (на основе набора заказов в SQL-запросе).
Индекс $ k в вашем решении относится к 0. В любом случае вы даже не используете $ k в своей петле oo
Если вы хотите вернуть только одну строку, используйте fetch () или mysql_get_row () (не рекомендуется) или эквивалент. И ваш SQL-запрос должен иметь LIMIT 1
$ k является ключом $ challengename, начинающимся с 0
foreach($this->challengenames as $key => $value) { $key[0] = $value['partnername']; $key[1]=$value['image_url']; }
Если вы хотите получить последние данные из своей базы данных, я рекомендую вам получить данные в порядке убывания и получить только одну строку, как указано ниже
select * from <your table> orderby DESC
теперь вам не нужно запускать цикл, просто используйте 0-й индекс, чтобы получить последние данные