3

I have this PHP array :

$food = array('fruits' => array('orange', 'banana', 'apple'),
              'veggie' => array('carrot', 'collard', NULL));

if I use this function :

$rows = count($food);

of course the result will be 2, but how to get number of array columns? so, I'm expecting 3 as a value of fruits and veggie columns. even though veggie has NULL.

1

5 Answers 5

7

...I mean, if the columns are always the same, then why should we loop it as many as rows?

If the number of columns is always the same and you have at least one element in your $food array you can just probe the first/current element with current()

$columns = count(current($food));
Sign up to request clarification or add additional context in comments.

Comments

5

You can try This: array_map with count.

<?php 
 $food = array('fruits' => array('orange', 'banana', 'apple'),
        'veggie' => array('carrot', 'collard', NULL));
 $typeTotals = array_map("count", $food);
echo "<pre>";
print_r($typeTotals);

OUTPUT:

Array ( [fruits] => 3 [veggie] => 3 )

3 Comments

i would answer this way also, i'd also add max if the columns are jagged. echo max(array_map('count', $food));, anyway +1
@Ghost but i guess he is expecting both the keys in output.
Thank you @Kevin. It is just what i want to do! Thank you Suchit Kumar!
2
$food = array('fruits' => array('orange', 'banana', 'apple'),
              'veggie' => array('carrot', 'collard', NULL));
$array = array_map('count', $food);

Comments

1

This approach will create an array of counts, by type:

$rows = [];
foreach ($food as $type => $items) {
    $rows[$type] = count($items);
]

1 Comment

Hi bro, thanks for your answer. but, is there any other ways to count the columns without foreach loop? I mean, if the columns are always the same, then why should we loop it as many as rows?
1

You can try this :

$food = array('fruits' => array('orange', 'banana', 'apple'),
                'veggie' => array('carrot', 'collard', NULL));

        echo count($food['fruits']);

However it would only work if you know the element e.g. 'fruits'.

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.