Цикл Foreach (или, может быть, пока?) — хотите вернуть только одну запись в зависимости от страницы

Решил это с помощью отредактированного кода ниже. Спасибо всем, кто помог!

У меня есть две записи в моей БД. Каждая запись имеет 6 полей (challengeId, partnerName, код, challengeTitle, описание, image_url). Я выбираю данное partnerName из просмотра родительской страницы, чтобы перейти к просмотру дочерней страницы.

Я использовал цикл foreach и у меня возникли проблемы. Теперь я вынул свой цикл foreach и заменил его <?php $challengename = $this->challengenames[$k] = current($this->challengenames); ?> но теперь не удается заставить дочернюю страницу отображать значения для challengeTitle, которые соответствуют «partnerName», которое я выбрал на своей родительской странице. Он всегда предоставляет значение challengeTitle первой записи вместо текущей записи. Мне нужно знать, как изменить значение challengeTitle в зависимости от того, какое имя партнера я выбрал на своей родительской странице.

Исправит ли это цикл do while или оператор if в контроллере дочерней страницы исправит это?

Любой совет (и изменения кода) очень ценится.


контроллер родительской страницы

public function viewChallengesAction(){
//get instance for request
$request = JO_Request::getInstance();
//get activated challenge names and set variables
$myChallenge=$this->getChallenge();
$this->view->challengenames = array();
foreach($myChallenge AS $k=>$challengename){
$this->view->challengenames[$k]['href'] = WM_Router::create($request->getBaseUrl() . '?module=challenges&controller=index&action=yourChallenge?code=' . $challengename['partnerName']);
$this->view->challengenames[$k]['partnerName'] = $challengename['partnerName'];
}

ДЕТСКИЙ ВИД

<div id="defaultcontainerwrapper" class="maxwidth">
<?php $challengename = $this->challenge; ?>
<header>
<h1>
<div class="list">
<span>Welcome to </span><?php echo $challengename['partnerName']; ?><span>'s Beat Waste Challenge!</span>
</div>
</h1>
</header>
<?php } ?>
</div>

РЕБЕНОК РЕБЕНКА

public function yourChallengeAction(){
//get activated challenge names and set variables
$request = JO_Request::getInstance();
$myChallenge=$this->getChallenge();
$code = $request->getQuery("code");
$this->view->challengenames = array();
foreach($myChallenge AS $k=>$challengename){
if ($challengename['partnerName'] == $code)
{
$this->view->challenge = $challengename;
break;
}

}

2

Решение

Если вы не знаете ключ и хотите текущий элемент массива, вы можете использовать:

$challengename = current($this->challengenames);

Или первый элемент массива:

$challengename = reset($this->challengenames);

Или последний элемент массива:

$challengename = end($this->challengenames);

Просто обратите внимание, что end и reset изменят расположение указателя массива.

0

Другие решения

 <?php $challengename = $this->challengenames[0] ?>

Вам не хватает последнего; попробуйте добавить его в агонию;
попробуйте ниже:

  <?php $challengename = $this->challengenames[0]; ?>
0

По вопросам рекламы [email protected]