-2

配列で[number]のようなパターンを見つける方法は?

私はこれに似た配列を持っています:

$array = array('1', '2', '3', '{1}', '{2}', '{3}', '[1]', '[2]', '[3]');

配列をフィルタリングして、 [a number] のような特定のパターンを持つ文字列を保持する方法は?

4

5 に答える 5

3

で配列をフィルタリングしてarray_filter()から、それを反復処理できます。

$filtered_array = array_filter( $array, function( $el) { 
    return preg_match( '/^\[\d+\]$/', $el);
});

これはコールバックを使用して、preg_match()左角かっこ[、桁数、\d+右角かっこで構成されるエントリを検索します]

于 2013-07-29T12:46:37.307 に答える
3

あなたが試すことができますis_array()

foreach ($array as $num) {
  if(is_array($num)) {
    echo $num . "<br />";
  }
}
于 2013-07-29T12:46:37.210 に答える
1

いくつかの可能性がありますが、ここではそのうちの 2 つを示します。

<?php

$array = array(1, 2, 3, "{1}", "{2}", "{3}", "[1]", "[2]", "[3]");



// Method 1
foreach ($array as $num)
{
    if(preg_match("/\[\d+\]/", $num)){
        echo $num . "<br />";

    }
}
echo "<hr/>"
// Method 2
$filtered=preg_grep("/\[\d+\]/", $array);
foreach ($filtered as $num)
{
    echo $num . "<br />";
}

?>
于 2013-07-29T12:54:27.667 に答える
0

preg_grepを使用するだけです:

$array = array(1, 2, 3, '{1}', '{2}', '{3}', '[1]', '[2]', '[3]');

$new_array = preg_grep('#^\[\d+(?:.\d+)?\]$#', $array);
$new_array = array_values($new_array); // re-index the array
print_r($new_array); // print the results

正規表現の説明:

  • ^: 文字列の始まり
  • \[: マッチ[
  • \d+:1桁以上一致
  • (?:.\d+)?: オプションで小数部分に一致
  • \]: マッチ]
  • $: 文字列の終わり
于 2013-07-29T12:47:38.320 に答える
0

もしかしてこういうこと?正規表現は、開始の[後に 1 桁の数字が続き、その後に終了が続くものと一致し]ます。

foreach ($array as $num) { 
    if ( preg_match( '#\[\d\]#', $num ) ) {
       echo $num;
    }
}
于 2013-07-29T12:48:32.503 に答える