0

より具体的にするために、各配列の特定のインデックスを持つ多次元配列があります。インデックスとして一意のIPを持ち、値としてエントリを持っています。

各配列から 1 つの値を再帰的に抽出し、同じ IP から 2 つの値を抽出して、バッチとして表示したいと考えています。とはいえ、セット全体を表示する必要があります。

もう少し明確にするために、IP の一意性に基づいてセット全体から値を抽出する必要があります。各バッチには 5 つの値が含まれている必要があり、リストに各値を表示する必要があります。IP の量は決して既知の値ではありません。

たとえば、次の配列がある場合:

Array
  (
    [ip] => Array
    (
        [0] => entry01


        [1] => entery02


        [2] => entery03


        [3] => entery04

    )

 [ip] => Array
     (
        [0] => entery05


     )

 [ip] => Array
     (
        [0] => entery06


     )
 )

私の最後の決心は次のようなものでなければなりません:

  entery01, entery05, entery06

ここで、最初の配列にまだ値 entery02-04 があることに注意してください。つまり、抽出が完了したら、それらも取得する必要があります。

4

4 に答える 4

0

その連想配列は不可能ですip。キーは 1 つしか持てません。

編集: がプレースホルダーであると仮定するとip、これを行う 1 つの方法があります。in_array()true

<?php

$begin = array(
    0 => array( 'entry01', 'entry02', 'entry03' ),
    1 => array( 'entry01', 'entry04' ),
    2 => array( 'entry02', 'entry07' )
);

$results = array();
foreach ( $begin as $k1 => $subarr ) {
    $count = 0;
    foreach ( $subarr as $k2 => $entry ) {
        if ( ! in_array( $entry, $results ) && $count < 1 ) {
            $results[] = $entry;
            $count++;
        }
    }
}
var_dump( $results );

?>

$ php unique_items.php 
array(3) {
  [0]=>
  string(7) "entry01"
  [1]=>
  string(7) "entry04"
  [2]=>
  string(7) "entry02"
}
于 2012-06-26T18:54:40.113 に答える
0
$events = array();
foreach($data_array as $ip=>$evnt_array){
  foreach($evnt_array as $event){
    if(!in_array($event,$events)){
       $events[] = $event
    }
  }
}

コメントごと

$events = array();
foreach($data_array as $ip=>$evnt_array){
  foreach($evnt_array as $event){
    if(!in_array($event,$events)){
      $events[] = $event
      break;
    }else{
      continue;
    }
  }
 }

この例では、最初の要素が一意である場合のみ取得し、内部ループから抜け出します。その最初の要素がすでに索引付けされている場合は、次の要素に進み、チェックを繰り返します。

于 2012-06-26T18:57:36.697 に答える
-1

このようなものが機能するはずだと思います

$myInputArray = // your array up there
$myOutputArray = array();
foreach($myInputArray as $ip) {
  foreach($ip as $value) {
    if(!in_array($value,$myOutputArray)){
      $myOutputArray[] = $value;
    }
    break;
  }
}

編集:申し訳ありませんが、私はこの行を逃しました:

各配列から 1 つの値を再帰的に抽出し、同じ IP から 2 つの値を抽出して、バッチとして表示したいと考えています。とはいえ、セット全体を表示する必要があります。

回答が更新されました

于 2012-06-26T18:57:41.543 に答える
-1

foreach ループを探していると思います。これは最初のものをつかむだけです。

foreach ($arrayName as $ip){
  echo $ip[0];
}

質問の一部を見逃していました。上記の部分は、私の考えではもはや有効な応答ではありません。キーがipで、値がipである連想配列が機能すると思います。IPのキーが存在しない場合は配列を確認し、存在する場合は追加し、配列からそのキーを削除します。配列の長さが 5 の場合は、停止できます。

于 2012-06-26T18:57:51.703 に答える