peace_love
peace_love

Reputation: 6461

How can I print the lowest key of an array?

This is my array:

   array(4) {
      ["1"]=>
      array(3) {
        [0]=>
        string(2) "01"
        [1]=>
        string(2) "02"
        [2]=>
        string(2) "03"
      }
      ["2"]=>
      array(2) {
        [0]=>
        string(2) "01"
        [1]=>
        string(2) "02"
      }
      ["3"]=>
      array(1) {
        [0]=>
        string(2) "01"
      }
      ["4"]=>
      array(1) {
        [0]=>
        string(2) "01"
      }
    }

I want to print the lowest key, but only from the keys, that have less than 3 values.

echo min(array_keys($myarray));

gives me the result: 1

But key 1 already has 3 values, so the result I would need is 2. In the case every key has 3 values then print the next key (in this case would be 5)

I do not know how to do this. I am happy for every hint or advise.

Upvotes: 2

Views: 87

Answers (1)

j1953756
j1953756

Reputation: 61

This function iterate over your array and looks for all keys that has a value less then 3 values. It will return the first it founds if none is found the next key is return.

function getLowestKeyWithLessThan($yourArray, $number=3)
{
    foreach ($yourArray as $key => $value) {
        if (count($value) < $number)
            return $key;
    }
    return count($yourArray) + 1;
}

If I run the following lines:

print "Answer " . getLowestKeyWithLessThan($yourArray);
print "\nAnswer " . getLowestKeyWithLessThan($AllKeysHasThreeElements);

This gives the answer:

Answer 2
Answer 5

Here is the data I used to test this:

$yourArray = array(
    "1"=> array(
        '0' => "01",
        '1' => "02",
        '2' => "03",
    ),
    "2"=> array(
        '0' => "01",
        '1' => "02",
    ),
    "3"=> array(
        '0' => "01",
    ),
    "4"=> array(
        '0' => "01",
    ),
);

$threeValues = array(
    '0' => "01",
    '1' => "02",
    '2' => "03",
);

$AllKeysHasThreeElements = array(
    "1"=> $threeValues,
    "2"=> $threeValues,
    "3"=> $threeValues,
    "4"=> $threeValues,
);

Of course the data could also been written like this:

$threeValues = array("01", "02", "03");
$yourArray = array($threeValues, array("01", "02"), array("01"), array("01"));
$AllKeysHasThreeElements = array($threeValues,$threeValues,$threeValues,$threeValues);

Upvotes: 2

Related Questions