PHP에서 여러 값에 대한 배열을 검색하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
복제 된 값에서 키를 가져와야합니다. 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]);
}
1 다면원 배열의 경우 다음 기능을 사용하여이를 달성 할 수 있습니다 (대안으로 array_keys()
):
function array_isearch($str, $array){
$found = array();
foreach ($array as $k => $v) {
if (strtolower($v) == strtolower($str)) {
$found[] = $k;
}
}
return $found;
}
PHP 매뉴얼 상태 Return Value
섹션의 섹션 array_search()
기능 문서 사용할 수 있습니다 array_keys()
이것을 달성하기 위해. 두 번째 매개 변수를 제공하면됩니다.
$keys = array_keys($list[0], "2009-09-09");