문제

복제 된 값에서 키를 가져와야합니다. Array_Search를 사용하려고했는데 잘 작동했지만 첫 번째 가치 만 얻었습니다.

중복 값에서 두 키를 가져와야합니다.이 경우 0과 2에서 검색 결과 출력이 양호합니다.

이 작업을 수행하는 PHP 기능이 있습니까? 아니면 여러 루프를 작성해야합니까?

$list[0][0] = "2009-09-09";
$list[0][1] = "2009-05-05";
$list[0][2] = "2009-09-09";
$list[1][0] = "first-paid";
$list[1][1] = "1";
$list[1][2] = "last-unpaid";

echo array_search("2009-09-09",$list[0]);
도움이 되었습니까?

해결책

당신은 원합니다 Array_keys 검색 값으로

array_keys($list[0], "2009-09-09");

이 경우 지정된 값으로 키 배열을 반환합니다. [0, 2]. 중복을 찾으려면 먼저 패스를 할 수 있습니다. Array_unique, 그런 다음 원본의 Array_keys를 사용하여 해당 배열을 반복하십시오. 길이> 1 배열을 반환하는 것은 중복이며 결과는 복제가 저장되는 키입니다. ... 같은 ...

$uniqueKeys = array_unique($list[0])

foreach ($uniqueKeys as $uniqueKey)
{
  $v = array_keys($list[0], $uniqueKey);

  if (count($v) > 1)
  {
    foreach ($v as $key)
    {
      // Work with $list[0][$key]
    }

  }
}

다른 팁

~ 안에 array_search() 우리는 읽을 수 있습니다 :

바늘이 건초 더미에 두 번 이상 발견되면 첫 번째 일치 키가 반환됩니다. 모든 일치하는 값에 대한 키를 반환하려면 사용하십시오. array_keys() 선택 사항과 함께 search_value 대신 매개 변수.

다음 기능 호출 조합은 모든 중복 값을 제공합니다.

$a = array(1, 1, 2, 3, 4, 5, 99, 2, 5, 2);

$unique     = array_unique($a); // preserves keys
$diffkeys   = array_diff_key($a, $unique);
$duplicates = array_unique($diffkeys);

echo 'Duplicates: ' . join(' ', $duplicates) . "\n"; // 1 2 5

당신은 그것을 사용하여 달성 할 수 있습니다 array_search() 사용하여 while 루프 및 다음 해결 방법 :

while (($key = array_search("2009-09-09", $list[0])) !== FALSE) {
  print($key);
  unset($list[0][$key]);
}

원천: php.net의 OpenXbox에서 큐

1 다면원 배열의 경우 다음 기능을 사용하여이를 달성 할 수 있습니다 (대안으로 array_keys()):

function array_isearch($str, $array){
  $found = array();
  foreach ($array as $k => $v) {
    if (strtolower($v) == strtolower($str)) {
      $found[] = $k;
    }
  }
  return $found;
}

원천: Robertark, php.net

PHP 매뉴얼 상태 Return Value 섹션의 섹션 array_search() 기능 문서 사용할 수 있습니다 array_keys() 이것을 달성하기 위해. 두 번째 매개 변수를 제공하면됩니다.

$keys = array_keys($list[0], "2009-09-09");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top