電子書籍の厳選無料作品が豊富!

多次元配列のカウント+1の仕方

下記のような多次元配列(ちなみに、これって二次元配列ですか?)があるとき、
常に、「2列目の0がある数+1」を返すようにしたいのですが、
どうすればよいのでしょうか?
$data[0][1]とか$data[1][1]とか$data[2][1]とかの意味です。
下記の例でいくと、2列目に0が3つあるので、数値の4を返したいのですが…、

■$data
1,0,A1,B1,C1
2,0,A2,B2,C2
3,0,A3,B3,C3
4,2,A4,B4,C4

■var_dump($data);
array(4) {
[0]=>
array(5) {
[0]=>
string(1) "1"
[1]=>
string(1) "0"
[2]=>
string(2) "A1"
[3]=>
string(2) "B1"
[4]=>
string(2) "C1"
}
[1]=>
array(5) {
[0]=>
string(1) "2"
[1]=>
string(1) "0"
[2]=>
string(2) "A2"
[3]=>
string(2) "B2"
[4]=>
string(2) "C2"
}
[2]=>
array(5) {
[0]=>
string(1) "3"
[1]=>
string(1) "0"
[2]=>
string(2) "A3"
[3]=>
string(2) "B3"
[4]=>
string(2) "C3"
}
[3]=>
array(5) {
[0]=>
string(1) "4"
[1]=>
string(1) "2"
[2]=>
string(2) "A4"
[3]=>
string(2) "B4"
[4]=>
string(2) "C4"
}
}

A 回答 (1件)

スマートなやり方があるかもしれませんが


思いつかなかったので単純にforループでまわして
0に一致した場合カウントアップしてみました

<?php
$data=array(array("1","0",A1,B1,C1),array("2","0",A2,B2,C2),array("3","0",A3,B3,C3),array("4","2",A4,B4,C4));
$key=1;
$count=countZero($data,$key);
print($count);

function countZero($data,$key) {
$count=count($data);
$zerocount=0;
for($i=0;$i<$count;$i++) {
if((isset($data[$i][$key])) && ($data[$i][$key]=="0")) {
$zerocount++;
}
}
return $zerocount+1;
}
?>
    • good
    • 0
この回答へのお礼

うまくいきました。ありがとうございました!

お礼日時:2010/07/03 16:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!