PHP: 배열에서 특정 요소를 제거하려면 어떻게 해야 합니까?
요소의 값을 알고 있을 때 요소를 배열에서 제거하려면 어떻게 해야 합니까?예를 들어 다음과 같습니다.
어레이가 있습니다.
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
가 입력하다strawberry
strawberry
에서 삭제되다$array
.
자세한 설명:
쉼표로 구분된 항목 목록을 저장하는 데이터베이스가 있습니다.코드는 사용자의 선택 항목에 따라 목록을 가져옵니다.따라서 스트로베리를 선택한 경우 스트로베리가 있는 경우 모든 엔트리를 코드화하고 split()를 사용하여 이를 배열로 변환합니다.사용자가 선택한 아이템(예: 딸기)을 어레이에서 삭제하도록 하겠습니다.
이 명령을 사용하여 키를 가져오고 발견된 경우 를 사용하여 제거합니다.
if (($key = array_search('strawberry', $array)) !== false) {
unset($array[$key]);
}
array_search
항목을 찾을 수 없는 경우 false(PHP 4.2.0까지 null)를 반환합니다.
같은 값의 항목이 여러 개 있을 경우 를 사용하여 모든 항목의 키를 가져올 수 있습니다.
foreach (array_keys($array, 'strawberry') as $key) {
unset($array[$key]);
}
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);
...추가 기능이나 포어치 루프가 필요 없습니다.
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])
는 배열 순서를 변경하지 않습니다.
한 줄만 할 수 있습니다.배열에서 요소가 삭제됩니다.
$array=array_diff($array,['strawberry']);
하여 특정 할 수 .$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");
현재 다음 기능을 사용하고 있습니다.
function array_delete($del_val, $array) {
if(is_array($del_val)) {
foreach ($del_val as $del_key => $del_value) {
foreach ($array as $key => $value){
if ($value == $del_value) {
unset($array[$key]);
}
}
}
} else {
foreach ($array as $key => $value){
if ($value == $del_val) {
unset($array[$key]);
}
}
}
return array_values($array);
}
삭제할 요소를 포함하는 배열 또는 문자열만 입력할 수 있습니다.다음과 같이 적습니다.
$detils = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$detils = array_delete(array('orange', 'apple'), $detils);
또는
$detils = array_delete('orange', $detils);
인덱스도 다시 만들 수 있습니다.
이는 어레이 내의 여러 값을 삭제할 수 있는 간단한 반복입니다.
// 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]);
}
몇 개 , 이 질문에는 더 하고 싶은 게 이 질문을 때 더 하고 말이 있어요.unset
★★★★★★★★★★★★★★★★★」array_diff
특정 요소를 삭제했을 때 새 배열의 인덱스를 재생하는 데 몇 가지 문제가 있었습니다(초기 인덱스가 저장되었기 때문입니다).
예시로 돌아가겠습니다.
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
$array_without_strawberries = array_diff($array, array('strawberry'));
또는
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
unset($array[array_search('strawberry', $array)]);
결과를 인쇄하면 다음과 같은 정보를 얻을 수 있습니다.
foreach ($array_without_strawberries as $data) {
print_r($data);
}
결과:
> apple
> orange
> blueberry
> kiwi
그러나 인덱스는 저장되므로 다음과 같은 요소에 액세스할 수 있습니다.
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[3] > blueberry
$array_without_strawberries[4] > kiwi
따라서 최종 어레이는 다시 인덱싱되지 않습니다. 이 뒤에 요.unset
또는array_diff
:
$array_without_strawberries = array_values($array);
그 후 어레이는 일반 인덱스가 됩니다.
$array_without_strawberries[0] > apple
$array_without_strawberries[1] > orange
$array_without_strawberries[2] > blueberry
$array_without_strawberries[3] > kiwi
이 투고 관련: 어레이 재인덱스화
도움이 되었으면 좋겠다
이 간단한 방법을 사용하여 도움이 되기를 바랍니다.
foreach($array as $k => $value)
{
if($value == 'strawberry')
{
unset($array[$k]);
}
}
보다 나은 접근법은 자신의 값을 연관지을 수 있는 어레이에 키로서 유지한 후array_keys()
실제 어레이를 원할 때 여기에 표시됩니다.그래야 사용할 필요가 없습니다.array_search
자신의 요소를 찾을 수 있습니다.
PHP 어레이 삭제에 대한 답변은 (키가 아닌) 값으로 https://stackoverflow.com/users/924109/rok-kralj에서 제공
IMO는 제거 및 변환되지 않으므로 최적의 답변입니다.
array_diff( [312, 401, 15, 401, 3], [401] ) // removing 401 returns [312, 15, 3]
잘 일반화되어 있으면 동시에 원하는 만큼 요소를 제거할 수 있습니다.
면책사항:이 솔루션은 기존 어레이를 그대로 유지한 채 새로운 어레이 복사본을 생성합니다.이것에 의해 변환되는 기존의 답변과는 대조됩니다.이거 때문에 좀 느려질 수도 있어요.
저는 같은 질문에 대한 답을 찾다가 이 주제를 발견했습니다.두 가지 주요 방법이 있습니다.array_search
&unset
및 의 사용array_diff
얼핏 보기에는 (사용 시처럼) 어레이를 추가할 필요가 없기 때문에 첫 번째 방법이 더 빠를 것 같았습니다.array_diff
하지만 저는 작은 벤치마크를 작성하여 두 번째 방법이 더 간결할 뿐만 아니라 더 빠르다는 것을 확인했습니다.공유하게 되어 기쁩니다. :)
https://glot.io/snippets/f6ow6biaol
array_key_exists를 사용하여 다음과 같은 어레이 내의 키를 검색하는 것이 좋습니다.
Array([0]=>'A',[1]=>'B',['key'=>'value'])
여기서 array_search 및 in_array()는 동작하지 않기 때문에 지정된 내용을 효과적으로 찾을 수 없습니다.그리고 unset()를 사용하여 삭제한다.
누군가에게 도움이 될 것 같아요.
특정 배열 값을 삭제하여 숫자 배열 생성
<?php
// create a "numeric" array
$animals = array('monitor', 'cpu', 'mouse', 'ram', 'wifi', 'usb', 'pendrive');
//Normarl display
print_r($animals);
echo "<br/><br/>";
//If splice the array
//array_splice($animals, 2, 2);
unset($animals[3]); // you can unset the particular value
print_r($animals);
?>
$remove= "strawberry";
$array = ["apple", "orange", "strawberry", "blueberry", "kiwi"];
foreach ($array as $key => $value) {
if ($value!=$remove) {
echo $value.'<br/>';
continue;
}
}
를 사용하여 다음 작업을 수행합니다.
if(($key = array_search($del_val, $messages)) !== false) {
unset($messages[$key]);
}
array_search()
발견된 요소의 키를 반환합니다.이 키를 사용하여 원래 배열에서 해당 요소를 제거할 수 있습니다.unset()
다시 돌아올 것이다.FALSE
그러나 실패 시 성공 시 "허위" 값을 반환할 수 있습니다(키:0
예를 들어) 그렇기 때문에 엄격한 비교는!==
연산자가 사용됩니다.
그if()
스테이트먼트는 다음 중 어느 쪽을 선택했는지 여부를 확인합니다.array_search()
값이 반환되었으며 반환된 경우에만 액션을 수행합니다.
unset($array[array_search('strawberry', $array)]);
<?php
$array = array("apple", "orange", "strawberry", "blueberry", "kiwi");
$delete = "strawberry";
$index = array_search($delete, $array);
array_splice($array, $index, 1);
var_dump($array);
?>
foreach ($get_dept as $key5 => $dept_value) {
if ($request->role_id == 5 || $request->role_id == 6){
array_splice($get_dept, $key5, 1);
}
}
$detils = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
function remove_embpty($values)
{
if($values=='orange')
{
$values='any name';
}
return $values;
}
$detils=array_map('remove_embpty',$detils);
print_r($detils);
언급URL : https://stackoverflow.com/questions/2448964/php-how-to-remove-specific-element-from-an-array
'source' 카테고리의 다른 글
일부 테이블 조건에서 MySQL/MariaDB 쿼리가 느릴 수 있습니다. (0) | 2022.12.24 |
---|---|
잘못된 바이트 수 길이로 인해 손상된 직렬화된 문자열을 복구하려면 어떻게 해야 합니까? (0) | 2022.12.24 |
MySQL Workbench에서 전체 데이터베이스 스크립트를 생성하는 방법 (0) | 2022.12.24 |
Django 1.10 및 Python 3.5에서 MariaDB 사용 (0) | 2022.12.24 |
utf8_general_ci와 utf8_unicode_ci의 차이점은 무엇입니까? (0) | 2022.12.24 |