반응형
값을 기준으로 2차원 배열을 필터링하는 방법
2차원 배열을 값으로 필터링하는 함수를 만들려면 어떻게 해야 합니까?
다음 배열이 주어집니다.
Array
(
[0] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => NEW
[appointment] => 0
)
[1] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => CALL1
[appointment] => 0
)
[2] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => Finance
[status] => CALL2
[appointment] => 0
)
[3] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => Partex
[status] => CALL3
[appointment] => 0
)
특정 값이 포함된 어레이만 표시하도록 어레이를 필터링하려면 어떻게 해야 합니까?name열쇠? 예를 들면,name = 'CarEnquiry'.
결과 출력은 다음과 같습니다.
Array
(
[0] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => NEW
[appointment] => 0
)
[1] => Array
(
[interval] => 2014-10-26
[leads] => 0
[name] => CarEnquiry
[status] => CALL1
[appointment] => 0
)
)
편집
검색 값을 교환할 수 있어야 한다는 것을 깜빡했습니다.name = 'CarEnquiry'또는name = 'Finance'.
콜백과 함께 PHP의 array_filter 함수를 사용합니다.
$new = array_filter($arr, function ($var) {
return ($var['name'] == 'CarEnquiry');
});
편집: 호환이 필요한 경우 코드를 약간 수정할 수 있습니다.
$filterBy = 'CarEnquiry'; // or Finance etc.
$new = array_filter($arr, function ($var) use ($filterBy) {
return ($var['name'] == $filterBy);
});
이 기능을 일반 함수로 만들려면 다음을 사용합니다.
function filterArrayByKeyValue($array, $key, $keyValue)
{
return array_filter($array, function($value) use ($key, $keyValue) {
return $value[$key] == $keyValue;
});
}
<?php
function filter_array($array,$term){
$matches = array();
foreach($array as $a){
if($a['name'] == $term)
$matches[]=$a;
}
return $matches;
}
$new_array = filter_array($your_array,'CarEnquiry');
?>
위의 예는 정확한 단어 일치를 사용하는 것입니다. 여기 정확하지 않은 "이름" 일치를 찾기 위해 배열을 필터링하는 간단한 예가 있습니다.
$options = array_filter($options, function ($option) use ($name) {
return strpos(strtolower($option['text']), strtolower($name)) !== FALSE;
});
array_filter필요한 기능입니다.http://php.net/manual/en/function.array-filter.php
다음과 같은 필터링 기능을 제공합니다.
function my_filter($elt) {
return $elt['name'] == 'something';
}
function multi_array_search_with_condition($array, $condition)
{
$foundItems = array();
foreach($array as $item)
{
$find = TRUE;
foreach($condition as $key => $value)
{
if(isset($item[$key]) && $item[$key] == $value)
{
$find = TRUE;
} else {
$find = FALSE;
}
}
if($find)
{
array_push($foundItems, $item);
}
}
return $foundItems;
}
이것은 제 기능이 이 문제에 대해 사용할 수 있습니다.사용할 수 있는 항목:
$filtered = multi_array_search_with_condition(
$array,
array('name' => 'CarEnquiry')
);
2차원 배열에서 필터링된 항목을 가져옵니다.
언급URL : https://stackoverflow.com/questions/27447923/how-to-filter-a-two-dimensional-array-by-value
반응형
'programing' 카테고리의 다른 글
| MethodArgumentNotValidException을 올바르게 던지는 방법 (0) | 2023.08.21 |
|---|---|
| jdbc Timestamp 또는 Date를 사용할 때 Oracle과 무시할 수 없는 실행 계획 차이 (0) | 2023.08.21 |
| PowerShell FINDSTR과 동등합니까? (0) | 2023.08.21 |
| C#을 사용하여 Excel의 여러 셀 주위에 테두리를 설정하는 방법 (0) | 2023.08.21 |
| Oracle 자동 추가 현재 날짜 (0) | 2023.08.21 |