>

같은 배열을 줘

$clusters = array(
"clustera" => array(
    '101',
    '102',
    '103',
    '104'
),
"clusterb" => array(
    '201',
    '202',
    '203',
    '204'
),
"clusterc" => array(
    '301',
    '302',
    '303',
    '304'
)
);

서버 (예 : 202)를 검색하여 클러스터로 되돌리려면 어떻게해야합니까? 즉, 202를 검색하고 응답이 "clusterb"입니다. array_search를 사용해 보았지만 단 차원 배열에만 해당되는 것 같습니다. (즉, $clusters를 주면 두 번째 주장이 잘못된 데이터 형식이라고 불평합니다)

많은 감사합니다!


  • 답변 # 1

    $search=202;
    $cluster=false;
    foreach ($clusters as $n=>$c)
      if (in_array($search, $c)) {
        $cluster=$n;
        break;
      }
    echo $cluster;
    
    

  • 답변 # 2

    function array_multi_search($needle,$haystack){
    foreach($haystack as $key=>$data){
    if(in_array($needle,$data))
    return $key;
    }
    }
    $key=array_multi_search(202,$clusters);
    echo $key;
    $array=$clusters[$key];
    
    

    이 기능을 사용해보십시오. $haystack (cluster)의 직계 자식 배열에서 $needle (202)의 키를 반환합니다. 테스트되지 않았으므로 작동하는지 알려주세요

  • 답변 # 3

    $arrIt = new RecursiveArrayIterator($cluster);
    $server = 202;
    foreach ($arrIt as $sub){
        if (in_array($server,$sub)){
            $clusterSubArr = $sub;
            break;
            }
        }
    $clusterX = array_search($clusterSubArr, $cluster);
    
    

  • 답변 # 4

    function getCluster($val) {
       foreach($clusters as $cluster_name => $cluster) {
          if(in_array($val, $cluster)) return $cluster_name;
       }
       return false;
    }
    
    

관련 자료

  • 이전 javautilzipzipexception - 중복 항목 : android/support/v4/accessibilityservice/accessibilityserviceinfocompatjellybeanmr2class
  • 다음 c# - WPF ListView 가상화 ListView 가상화를 비활성화하는 방법은 무엇입니까?