2

次のような多次元配列があるとしましょう。

array(
array("Thing1","OtherThing1"),
array("Thing1","OtherThing2"),
array("Thing2","OtherThing3")
);

多次元配列に値「Thing1」が存在する回数をカウントするにはどうすればよいですか?

4

6 に答える 6

3

array_search詳細については、こちらのhttp://www.php.net/manual/en/function.array-search.phpを参照してください

このコードは、phpドキュメントサンプルにあるこのサンプルです。

<?php 
function recursiveArraySearchAll($haystack, $needle, $index = null) 
{ 
 $aIt     = new RecursiveArrayIterator($haystack); 
 $it    = new RecursiveIteratorIterator($aIt); 
 $resultkeys; 

 while($it->valid()) {        
 if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND (strpos($it->current(), $needle)!==false)) { //$it->current() == $needle 
 $resultkeys[]=$aIt->key(); //return $aIt->key(); 
 } 

 $it->next(); 
 } 
 return $resultkeys;  // return all finding in an array 

} ; 
?> 

針が干し草の山で複数回見つかった場合、最初に一致したキーが返されます。一致するすべての値のキーを返すには、array_keys()代わりにオプションのsearch_valueパラメーターを使用します。

http://www.php.net/manual/en/function.array-keys.php

于 2013-03-25T10:35:14.363 に答える
2

これを試して :

$arr =array(
array("Thing1","OtherThing1"),
array("Thing1","OtherThing2"),
array("Thing2","OtherThing3")
);

echo "<pre>";
$res  = array_count_values(call_user_func_array('array_merge', $arr));

echo $res['Thing1'];

出力:

Array
(
    [Thing1] => 2
    [OtherThing1] => 1
    [OtherThing2] => 1
    [Thing2] => 1
    [OtherThing3] => 1
)

各値の出現を示します。すなわち:Thing1発生2回数。

編集:OPのコメントによると:「どの配列が結果の配列を意味しますか?」-入力配列。たとえば、これは入力配列になります:array(array(1,1)、array(2,1)、array(3,2))、最初の値(1,2,3)のみをカウントしたい2番目の値ではありません(1,1,2)–gdscei7分前

$arr =array(
array("Thing1","OtherThing1"),
array("Thing1","OtherThing2"),
array("Thing2","OtherThing3")
);

$res  = array_count_values(array_map(function($a){return $a[0];}, $arr));

echo $res['Thing1'];
于 2013-03-25T10:36:24.693 に答える
2
function showCount($arr, $needle, $count=0)
{
    // Check if $arr is array. Thx to Waygood
    if(!is_array($arr)) return false;

    foreach($arr as $k=>$v)
    {
        // if item is array do recursion
        if(is_array($v))
        {
            $count = showCount($v, $needle, $count);
        }
        elseif($v == $needle){
            $count++;
        }
    }
    return $count;  
}
于 2013-03-25T10:53:26.757 に答える
1

使用すると次のin_arrayことが役立ちます。

$cont = 0;

//for each array inside the multidimensional one
foreach($multidimensional as $m){
    if(in_array('Thing1', $m)){
        $cont++;
    }
}

echo $cont;

詳細については、http://php.net/manual/en/function.in-array.phpをご覧ください。

于 2013-03-25T10:34:25.750 に答える
1

これを試して

$arr =array(
array("Thing1","OtherThing1"),
 array("Thing1","OtherThing2"),
 array("Thing2","OtherThing3")
 );
   $abc=array_count_values(call_user_func_array('array_merge', $arr));
  echo $abc[Thing1];
于 2013-03-25T11:01:25.053 に答える
0
$count = 0;

foreach($array as $key => $value)
{
if(in_array("Thing1", $value)) $count++;
}
于 2013-03-25T10:32:49.670 に答える