programing

값을 기준으로 2차원 배열을 필터링하는 방법

elecom 2023. 8. 21. 19:36
반응형

값을 기준으로 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

반응형