[php] PHP : 배열에서 특정 요소를 제거하는 방법?

요소 이름을 알 때 배열에서 요소를 어떻게 제거합니까? 예를 들면 다음과 같습니다.

배열이 있습니다.

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');

사용자가 입력 strawberry

strawberry 제거됩니다.

충분히 설명하려면 :

쉼표로 구분 된 항목 목록을 저장하는 데이터베이스가 있습니다. 코드는 해당 선택이있는 사용자 선택에 따라 목록을 가져옵니다. 따라서 딸기를 선택하면 모든 항목의 코드 풀이 딸기가 있고 split ()을 사용하여 배열로 변환합니다. 배열에서 사용자가 선택한 항목 (예 : 딸기)을 제거하고 싶습니다.



답변

사용 array_search키를 얻고 그것을 제거 unset발견하는 경우 :

if (($key = array_search('strawberry', $array)) !== false) {
    unset($array[$key]);
}

array_search항목을 찾지 못하면 false를 반환합니다 ( PHP 4.2.0까지 null ).

동일한 값을 가진 여러 항목이있을 수 있으면 array_keys모든 항목의 키를 얻는 데 사용할 수 있습니다 .

foreach (array_keys($array, 'strawberry') as $key) {
    unset($array[$key]);
}


답변

사용 array_diff()1 개 라인 솔루션 :

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi', 'strawberry'); //throw in another 'strawberry' to demonstrate that it removes multiple instances of the string
$array_without_strawberries = array_diff($array, array('strawberry'));
print_r($array_without_strawberries);

… 추가 기능이나 foreach 루프가 필요하지 않습니다.


답변

if (in_array('strawberry', $array))
{
    unset($array[array_search('strawberry',$array)]);
}


답변

여기에 일반 배열을 사용하는 경우 (이 경우처럼) 대신이 코드를 사용해야합니다.

if (($key = array_search('strawberry', $array)) !== false) {
    array_splice($array, $key, 1);
}

unset($array[$key]) 요소 만 제거하고 일반 배열의 순서를 바꾸지 않습니다.

아마도 우리는 배열을 가지고 array_splice를 사용합니다 :

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
array_splice($array, 2, 1);
json_encode($array);
// yields the array ['apple', 'orange', 'blueberry', 'kiwi']

설정 해제와 비교 ​​:

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[2]);
json_encode($array);
// yields an object {"0": "apple", "1": "orange", "3": "blueberry", "4": "kiwi"}

unset($array[$key])배열의 순서를 바꾸지 않는 방법에 주목 하십시오.


답변

배열 필터를 사용하여 $v다음 조건에 따라 항목을 제거 할 수 있습니다 .

$arr = array_filter($arr, function($v){
    return $v != 'some_value';
});


답변

이렇게 될 것입니다 :

 function rmv_val($var)
 {
     return(!($var == 'strawberry'));
 }

 $array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');

 $array_res = array_filter($array, "rmv_val");


답변

이것은 배열에서 여러 값을 삭제할 수있는 간단한 반복입니다.

    // Your array
    $list = array("apple", "orange", "strawberry", "lemon", "banana");

    // Initilize what to delete
    $delete_val = array("orange", "lemon", "banana");

    // Search for the array key and unset   
    foreach($delete_val as $key){
        $keyToDelete = array_search($key, $list);
        unset($list[$keyToDelete]);
    }