2016-11-16 1 views
0

配列内で特定の値が現れる回数を数えようとしています。ただし、この値は常に1だけ増分され、配列にはこれらの値の数が不明です。配列内の変数の値の数のカウント

例:

$first = array('my-value-1','my-value-2','my-value-3'); 

$second = array('my-value-1','my-value-2','my-value-3', 'my-value-4', 'my-value-5'); 

私の目標は、上記の例では$secondため$firstのための3の数と5の数を取得することができることです。

配列には他の値があるかもしれませんが、私が数えたいのはmy-value-で始まる値だけです。

配列の値の数はわかりませんが、最後に数字が追加されたmy-value-で始まります。

my-value-が何らかのワイルドカードで配列に表示される回数を数える方法はありますか?

+0

これは** ** **のforeachループまたは** array_mapをの単純な組み合わせのように思えるし、[strpos](http://php.net/manual/ – Mihailo

+0

標準PHPの 'count($ arrayname)'は、配列中に存在する個数を返します。 – RiggsFolly

+1

'my-value-'で始まらないものが配列内にあれば、あなたが提供するサンプルでそれを示すのに役立っています – RiggsFolly

答えて

7

正規表現を使用して配列をフィルタリングし、一致する値を数えます。あなたも始め^my-value-\d+になるようにそれを強制するために^を使用することができます。

$count = count(preg_grep('/my-value-\d+/', $first)); 

ます。また、このようにそれを行うことができます。再び、あなたはそれが最初に一致させるために代わり=== 0を使用することもできます。

$count = count(array_filter($first, function($v) { 
             return strpos($v, 'my-value-') !== false; 
            })); 
-3

私は罰金あなたの質問を理解していると確認していません。場合には、申し訳ありません。 最初のアプローチは、2つの配列(array_mergeを参照)と重複を削除(array_uniqueを参照)してから要素を取得することです(see:countを参照)。 2番目の方法は、要素が最初の配列(in_arrayを参照)に存在するかどうかをチェックしてから、それを数える(see:countを参照)2番目の配列の最初の配列要素を追加することです。

0

あなたの質問によれば、「彼らはいつも私の価値から始まり、最後に数字が追加されます」。したがって、正規表現は必要ありません。PHPの組み込みcount()関数を使用して、配列内の項目数をカウントするだけです。試してください:

<?php 
$first = array('my-value-1','my-value-2','my-value-3'); 
$second = array('my-value-1','my-value-2','my-value-3', 'my-value-4', 'my-value-5'); 

$size_of_first = count($first); 
$size_of_first = count($first); 

echo $size_of_first; //Will echo 3 
echo $size_of_first; //Will echo 5 

?> 
+0

他の値かもしれない –

+0

はい、これは私が直面している問題は他の値があるということです。私が数えることに興味がある値は、いつも 'my-value-'で始まります。私は元の質問を明確にします。 – ScottD

+0

@ScottDあなたの質問にその可能性を示してください。私たちは**透視的ではありません**私たちは質問にあるものに基づいて答えることができます – RiggsFolly

0

部分文字列とターゲット配列を指定することで値を数えるクイック関数です。
注:検索では大文字と小文字が区別されません。

function countValues($prefix, $array) { 
    return count(array_filter($array, function($item) use ($prefix) { 
     return stripos($item, $prefix) !== false; 
    })); 
} 

使用法:
$count = countValues('my-value', $first);