1

How to count elements of a nested array? I want to count elements of $student_info['Aptitude'].

I tried the following and I'm getting undefined index at the following code:

else if (count($student_info["Aptitude"])==0){ //no records for report card
         $this->Session->setFlash('Your child is a new student in our school. 
            He/She doesn\'t have records for a report card yet.');
            $this->redirect(array('controller'=>'pages','action'=>'home'));

Aptitude is an array within $student_info which has 4 arrays

var_dump($student_info) produces the following output. Aptitude array is on the last line. It doesn't have any elements:

array(1) { 
    [0]=> array(4) { 
        ["Student"]=> array(10) { 
            ["id"]=> string(2) "20" 
            ["name"]=> string(15) "Uma Palaniappan" 
            ["gender"]=> string(6) "Female" 
            ["dob"]=> string(10) "2007-04-26" 
            ["created"]=> string(19) "2011-12-29 10:14:03" 
            ["modified"]=> string(19) "2011-12-29 10:14:03" 
            ["merry_class_id"]=> string(1) "3" 
            ["merry_parent_id"]=> string(2) "25" 
            ["term1_comments"]=> NULL
            ["term2_comments"]=> NULL 
        } 
        ["MerryParent"]=> array(14) { 
            ["id"]=> string(2) "25" 
            ["initial"]=> string(2) "Mr" 
            ["name"]=> string(13) "Palaniappan K" 
            ["username"]=> string(7) "kpalani" 
            ["email"]=>string(20) "[email protected]" 
            ["password"]=> string(40) "43f5e1298f3b2478a9cd4ab7c6f5f703380dbcc9" 
            ["landline"]=> string(12) "044-77223399" 
            ["mobile"]=> string(10) "9860662309" 
            ["address"]=> string(15) "44 Megala Chowk" 
            ["state_id"]=> string(1) "6" 
            ["city_id"]=> string(3) "103" 
            ["postal_code"]=> string(6) "384733" 
            ["created"]=> string(19) "2011-12-29 10:14:03" 
            ["modified"]=> string(19) "2011-12-29 10:52:23" 
        } 

        ["MerryClass"]=> array(2) { 
            ["id"]=> string(1) "3" 
            ["class_name"]=> string(3) "LKG" 
        } 
        ["Aptitude"]=> array(0) { 
        } 
    } 
} 

thank you.

2
  • Lol, hope that is test data or Mr Palaniappan K may get some unusual phone calls. Commented Apr 12, 2012 at 5:38
  • of course it is test data. :) Commented Apr 12, 2012 at 5:57

3 Answers 3

2

Use

if (count($student_info[0]["Aptitude"])==0)

instead. Please format your example code yourself the next time. You could have easily spotted this mistake yourself.

Consider using xdebug to have a more readable output for var_dump.

Sign up to request clarification or add additional context in comments.

Comments

1
else if (count($student_info[0]["Aptitude"])==0){ //no records for report card
     $this->Session->setFlash('Your child is a new student in our school. 
        He/She doesn\'t have records for a report card yet.');
        $this->redirect(array('controller'=>'pages','action'=>'home'));

you forgot the [0] index.

Comments

0

Try this:

count(Set::extract('/Aptitude', $student_info))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.