9

こんにちは、 a 内の重複要素の数を見つけるにはどうすればよいmultidimensional arrayですか?

私はこのような配列を持っています

Array
(
    [0] => Array
        (
            [lid] => 192
            [lname] => sdsss
        )

    [1] => Array
        (
            [lid] => 202
            [lname] =>  testing
        )

    [2] => Array
        (
            [lid] => 192
            [lname] => sdsss
        )

    [3] => Array
        (
            [lid] => 202
            [lname] =>  testing
        )

)

各要素の数を見つける方法は?

192つまり、id202などのエントリの数

4

8 に答える 8

22

このトリックを採用することができます。配列の各項目(配列自体)をそれぞれ['lid']のメンバーにマップしてから、を使用array_count_value()してカウントを行います。

array_count_values(array_map(function($item) {
    return $item['lid'];
}, $arr);

さらに、それはワンライナーであるため、エリートハッカーのステータスに追加されます。

アップデート

5.5以降、次のように短縮できます。

array_count_values(array_column($arr, 'lid'));
于 2012-11-16T09:20:33.113 に答える
2
foreach ($array as $value) 
{
    $numbers[$value[lid]]++;
}
foreach ($numbers as $key => $value) 
{
    echo 'numbers of '.$key.' equal '.$value.'<br/>';
}
于 2012-11-16T09:17:59.563 に答える
0

次のコードは、それらすべてのカウントを取得します-最後に1より大きいものはすべて繰り返されます。

<?php
$lidCount = array();
$lnameCount = array();

foreach ($yourArray as $arr) {

  if (isset($lidCount[$arr['lid']])) {
    $lidCount[$arr['lid']]++;
  } else {
    $lidCount[$arr['lid']] = 1;
  }

  if (isset($lnameCount [$arr['lname']])) {
    $lnameCount [$arr['lname']]++;
  } else {
    $lnameCount [$arr['lname']] = 1;
  }

}
于 2012-11-16T09:16:32.720 に答える
0
$array = array('192', '202', '192', '202');
print_r(array_count_values($array));
于 2012-11-16T09:17:02.003 に答える
0
$orders = array(
 array(
    'lid' => '',
    'lname' => '',

  ))....
$foundIds = array();
foreach ( $orders as $index => $order )
{
  if ( isset( $foundIds[$order['lid']] ) )
  {
    $orders[$index]['is_dupe'] = true;
    $orders[$foundIds[$order['lid']]]['is_dupe'] = true;
  } else {
    $orders[$index]['is_dupe'] = false;
  }
  $foundIds[$order['lid']] = $index;
}
于 2012-11-16T09:21:37.837 に答える
0

このコードを試してください:

$array_count = array();
foreach ($array as $arr) :
    if (in_array($arr, $array_count)) {
        foreach ($array_count as $key => $count) :
            if ($key == $arr) {
                $array_count[$key]++;
                break;
            }
        endforeach;
    } else {
        $array_count[$arr] = 1;
    }
endforeach;
于 2012-11-16T09:34:56.853 に答える
0

機能で確認in_array()

于 2012-11-16T09:35:38.677 に答える