어떻게 표현해야 할지 모르겠습니다. 간단히 말해서 요구 사항이 C#의 linq와 다소 비슷합니다.
다음과 같은 배열이 있으면
<code>$test = [ 'a'=>'a1', 'b'=>'a1', 'c'=>'c1', ] </code>
이제 $test['a']를 통해 'a1'을 쿼리할 수 있지만 'a1'을 통해 'a'와 'b' 두 요소도 쿼리하고 싶습니다. 방법을 문의하세요. 이것을 PHP로 구현 하시겠습니까?
보충: 어떤 사람들은 foreach를 사용하여 구현한다고 하지만 내 배열은 나중에 수천 또는 수만 개로 매우 커질 수 있으므로 foreach를 사용하는 것은 확실히 효율적이지 않습니다.
기존 솔루션은 각 배열 요소의 키 값이 다른 상황, 즉 1이 array_search, 2가 array_flip을 먼저 사용한 후 전통적인 $test[를 사용하는 상황만 해결할 수 있습니다. 'a1'] 찾아보세요.
어떻게 표현해야 할지 모르겠습니다. 간단히 말해서 요구 사항이 C#의 linq와 다소 비슷합니다.
다음과 같은 배열이 있으면
<code>$test = [ 'a'=>'a1', 'b'=>'a1', 'c'=>'c1', ] </code>
이제 $test['a']를 통해 'a1'을 쿼리할 수 있지만 'a1'을 통해 'a'와 'b' 두 요소도 쿼리하고 싶습니다. 방법을 문의하세요. 이것을 PHP로 구현 하시겠습니까?
보충: 어떤 사람들은 foreach를 사용하여 구현한다고 하지만 내 배열은 나중에 수천 또는 수만 개로 매우 커질 수 있으므로 foreach를 사용하는 것은 확실히 효율적이지 않습니다.
기존 솔루션으로는 각 배열 요소의 키 값이 다른 상황, 즉 일대일 매핑 상황만 해결할 수 있습니다. 첫 번째는 array_search, 두 번째는 array_flip, 그 다음은 전통적인 $test['a1'] 찾기.
매뉴얼의 array_search를 통해 귀하의 요구 사항을 해결할 수 있습니다.
<code class="php"><?php $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); $key = array_search('green', $array); // $key = 2; $key = array_search('red', $array); // $key = 1; ?> </code>
그룹의 전문가에게 문제 해결을 요청하세요. array_keys만 있으면 됩니다.
<code><?php $a=array("a"=>"Dog","b"=>"Dog","c"=>5,"d"=>"5"); print_r(array_keys($a,"Dog")); //Array ( [0] => a [1] => b ) ?> </code>
코드대로 가세요! ~
좋은 방법은 없습니다. 어레이 2개로 해보자
초대해 주셔서 감사합니다. 배열 구조의 key
은 확실히 고유하지만, 제가 아는 한 key
의 c#
을 구현하기 위해 서로 다른 linq
는 동일한 값에 해당할 수 있기 때문입니다.
<code class="php">$test = [ 'a' => 'a1', 'b' => 'b1', 'c' => 'c1', 'd' => 'd1', 'e' => 'd1' ]; //去除重复的值 $test = array_unique($test);</code>
중복된 값을 제거한 후 배열을 반대로 하세요.
<code class="php">$test = [ 'a' => 'a1', 'b' => 'b1', 'c' => 'c1', 'd' => 'd1', 'e' => 'd1' ]; $test = array_unique($test); $wocao = array_flip($test); var_dump($wocao); </code>
key
반전 구조는 다음과 같이 원본 배열의 value
을 값으로 처리하고 원본 배열의 key
를
<code>array(4) { ["a1"]=> string(1) "a" ["b1"]=> string(1) "b" ["c1"]=> string(1) "c" ["d1"]=> string(1) "d" }</code>
이제 c#
과 유사한 linq 기능을 구현할 수 있습니다
<code>$test = [ 'a' => 'a1', 'b' => 'b1', 'c' => 'c1', 'd' => 'd1', 'e' => 'd1' ]; $test = array_unique($test); $wocao = array_flip($test); $test['a']; //a1 $wocao['a1']; //a</code>
부족한점 지적해주세요,,,
그냥 값을 기준으로 키를 쿼리하는 것 아닌가요? array_keys로 해결할 수 있습니다.
<code>$arr = array('a' => 'a1', 'b' => 'a1', 'c' => 'c1'); var_export( array_keys($arr, 'a1') ); //输出键名 a 和 b</code>