dongzhiman2162
2017-06-03 00:43
浏览 74
已采纳

使用CodeIgniter将数组从Controller传递到View

I am trying to pass an array with keys numbered 0 through 9 to my view. However, when I try to echo a specific key or a foreach for all keys to display the data, nothing shows.

My controller:

    $i=0;
    $cleanarray = array();

    foreach ($phrase as $innerphrase) {
        if (is_array($innerphrase)) {
            foreach ($innerphrase as $value) {
                $cleanarray[$i] = $value;
                $i++;
            }
        }
    }

    $this->load->view('blogview', $cleanarray);

Outputs:

Array
(
    [0] => On Friday evenings in Thailand, sandwiched between the evening news and a popular soap opera, is a prime-time programme that has been running for three years, or ever since the military took power in a May 22, 2014 coup. 
    [1] => The Reds pulled off their biggest comeback in a year to finally end their pesky losing streak.
    [2] => A co-founder of Twitter says he's sorry if the popular social media platform helped put Donald Trump in the White House, as the president has suggested.
    [3] => Daniel Suarez is thrilled to be competing in the NASCAR All-Star race after struggling in his rookie season.
    [4] => Lexi Thompson remained in position for her first victory since a rules infraction cost her a major title, shooting a 2-under 69 in tricky wind conditions Saturday to take a three-stroke lead over In Gee Chun into the final round of the Kingsmill Championship.
    [5] => Boston Celtics guard Isaiah Thomas will miss the remainder of the NBA playoffs after aggravating a hip injury during Game Two of the Eastern Conference final, the team announced on Saturday.
    [6] => Yankees manager Joe Girardi has been ejected during an animated argument and New York pitching coach Larry Rothschild and Tampa Bay starter Matt Andriese also have been tossed in a testy game at Tropicana Field.
    [7] => Ed Carpenter turned a tough draw into a winning hand Saturday.
    [8] => Cloud Computing pulled off a major surprise in the Preakness Stakes in Maryland on Saturday, charging down the stretch to overtake Classic Empire and win the second race of U.S. thoroughbred racing's Triple Crown.
    [9] => Sometimes it pays to have a fresh horse.
)

My view:

<html>
<head>
</head>
<body>
        <h1>I am terrible at PHP!</h1>

        <h2><?php echo $0; ?></h2>  

</body>
</html>

However nothing shows. I have also tried using print_r in the same fashion. I am aware that CodeIgniter does not allow me to pass the variables in the controller and instead it allows me access directly to the keys in the array.

Ultimately I would like to iterate through the array and display all results but I'm trying to start "small" and at least get a single element of the array to pass through to the view. If someone could explain why this isn't working and then what one would do to use a for or foreach to iterate through the array, I would be very grateful.

I am aware that this question has likely been answered many times but for the life of me I cannot extrapolate the responses to these questions into a solution that works in my case.

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

5条回答 默认 最新

  • doushang3352 2017-06-03 07:10
    最佳回答

    Use this code:

    controller:

    $i=0;
    $cleanarray = array();
    
    foreach ($phrase as $innerphrase) {
        if (is_array($innerphrase)) {
            foreach ($innerphrase as $value) {
                $cleanarray[$i] = $value;
                $i++;
            }
        }
    }
    
    $array2 =  array();  // create a new array
    $array2['contents']= $cleanarray; // add $cleanarray to the new array
    $this->load->view('blogview', $array2); // pass the new array as the parameter
    

    Inside view file:

    echo ( "Contents: ");

    // print the elements in $cleanarray

    foreach ($contents as $val)

    echo "$val<br/>";
    

    Note: We can't access $array2 here. Instead, use '$contents[]'.

    评论
    解决 无用
    打赏 举报
查看更多回答(4条)

相关推荐 更多相似问题