配列の要素数をカウントする場合
count関数
$array1 = ['apple', 'orange', 'melon', 'apple', 'pineapple'];
$count = count($array1);
出力結果:5
配列には5つの要素があるためカウント関数では5とカウントされて出力されています。
多次元配列をカウントする場合
それでは同じ方法で多次元配列をカウントしてみます
$array1 = [
['apple', 'orange', 'melon', 'apple', 'pineapple'],
['apple', 'orange', 'melon', 'apple', 'pineapple'],
['apple', 'orange', 'melon', 'apple', 'pineapple'],
];
echo count($array1);
出力結果:3
出力結果が「15」となるはずなのに「3」と出力されました。
配列の中の孫要素数ではなく、子要素のみをカウントしているようです。
複雑な配列構造であってもカウントする方法とは?
COUNT_RECURSIVEの登場です。
$array1 = [
['apple','orange', 'melon', 'apple','pineapple'],
['apple','orange', 'melon', 'apple','pineapple'],
['apple','orange', 'melon', 'apple','pineapple']
];
echo count($array1 , COUNT_RECURSIVE);
出力結果:18
出力結果が18と出力されました。
配列の子要素数[3]、孫要素[15]で合計18といったカウント方法です。
それでは孫要素のみをカウントしたい場合どうする方法があるでしょうか?
どうしても孫要素のみカウントしたい!
以下
$array1 = [
['apple','orange', 'melon', 'apple','pineapple'],
['apple','orange', 'melon', 'apple','pineapple'],
['apple','orange', 'melon', 'apple','pineapple']
];
echo count($array1 , COUNT_RECURSIVE)-count($array1);
こんな方法があるようです。
多分使わないと思います。