Note that there are some explanatory texts on larger screens.

plurals
  1. POPHP array vanishes in foreach statement - scope issue?
    primarykey
    data
    text
    <p>So, I have this very weird error - Some advanced PHP devs might also be considered somewhat weird.</p> <p>In the 2nd foreach statement I have an array "$reply_each" created in that foreach statement and it is supposed to be "array_push()"-ed into another array called "$recent_discussion_each['discussion_replies_array']". This works while in the 2nd foreach statement. But as soon as the 2nd foreach statement finishes, the "$reply_each" array just vanishes - as if it was out of scope. Just to be sure it wasn't a scope issue, I initialized $reply_each at the beginning of the function but that didn't help - it must be something else.</p> <p>Help, please?</p> <p>Update: I probably should add that when I do a count() on $recent_discussion_each['discussion_replies_array'] inside the 2nd foreach statement, I get the correct value of 1. But when I do an identical count(), but this time outside of the 2nd foreach statement, I get an incorrect value of 0. This is the problem, if it wasn't clear before.</p> <pre><code>public function getRecentDiscussions($num_recent_discussions, $course_id) { // $this-&gt;load-&gt;database(); // $recent_discussions_array = array(); // // Construct query to fetch recent discussions along with their replies and some // basic user info about the authors $query_recent_discussions = $this-&gt;db-&gt;select('course_discussion.id AS course_discussion_id, user.f_name, user.l_name, course_discussion.text, course_discussion.posted_datetime, course_discussion.is_reply, course_discussion.parent_id ') -&gt;join('user', 'course_discussion.owner = user.id') -&gt;where('course_discussion.course', $course_id) -&gt;limit($num_recent_discussions) -&gt;get('course_discussion'); // foreach($query_recent_discussions-&gt;result_array() as $row) { // // Figure out of this comment is a parent or a reply. If it is a parent (meaning is_reply // is equal to 0), then treat it like one if($row['is_reply'] == '0') { // $recent_discussion_each = array(); // $recent_discussion_each['discussion_id'] = $row['course_discussion_id']; $recent_discussion_each['discussion_owner_f_name'] = $row['f_name']; $recent_discussion_each['discussion_owner_l_name'] = $row['l_name']; $recent_discussion_each['discussion_body'] = $row['text']; $recent_discussion_each['discussion_posted_datetime'] = $row['posted_datetime']; $recent_discussion_each['discussion_replies_array'] = array(); // array_push($recent_discussions_array, $recent_discussion_each); } // // Else, it must be a reply since is_reply is not a 0 else { // // Look for the parent comment by going through the entire list of comments foreach($recent_discussions_array as $potential_parent) { // // Check to see if this comment's (now known as a reply's) id matches // the id of the comment currently in the position in the list of comments if($row['parent_id'] == $potential_parent['discussion_id']) { // $reply_each = array(); // $reply_each['reply_id'] = $row['course_discussion_id']; $reply_each['reply_owner_f_name'] = $row['f_name']; $reply_each['reply_owner_l_name'] = $row['l_name']; $reply_each['reply_text'] = $row['text']; $reply_each['reply_posted_datetime'] = $row['posted_datetime']; $reply_each['reply_is_reply'] = $row['is_reply']; $reply_each['reply_parent_id'] = $row['parent_id']; // array_push($potential_parent['discussion_replies_array'], $reply_each); } } } } // foreach($recent_discussions_array as $recent_discussion) { echo ($recent_discussion['discussion_id'].' has the following replies: '); foreach($recent_discussion['discussion_replies_array'] as $reply) { echo($reply['reply_id']); } } // return $recent_discussions_array; // // end // } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload