Foreach 循环(或者 while 也许做?)- 只希望 return 一条记录,具体取决于页面

Foreach loop (or do while maybe?) - Want to return only one record depending on page

使用下面编辑的代码解决了这个问题。感谢所有帮助过的人!

我的数据库中有两条记录。每条记录有 6 个字段(challengeId、partnerName、code、challengeTitle、description、image_url)。我从我的父页面视图 select 给定的 partnerName 转到我的子页面视图。

我在使用 foreach 循环时遇到了问题。我现在已经取出我的 foreach 循环并将其替换为 <?php $challengename = $this->challengenames[$k] = current($this->challengenames); ?> 但现在无法让子页面显示对应于我在父页面上选择的 'partnerName' 的 challengeTitle 的值。它始终提供第一个记录而不是当前记录的 challengeTitle 值。我需要知道如何根据我在父页面上选择的 partnerName 更改 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;
        }

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

您缺少最后一个;尝试重新添加; 尝试以下:

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

如果您不知道键值并且想要数组的当前元素,您可以使用:

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

或者数组的第一个元素:

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

或数组的最后一个元素:

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

注意end和reset会改变数组的指针位置