값을 찾는 방법은 배열에 값이 있는지, 제거하는 방법입니다. 이 작업을 수행하기 위해 PHP 기본 제공 배열 함수가있는 경우. 제거한 후에 순차적 인덱스 순서가 필요합니다. 어떤 몸이라도 나를 도와주세요.배열에서 값을 찾고 PHP 배열 함수를 사용하여이를 제거하는 방법
답변
배열의 요소를 검색하려면 사용
한 번 수행 array_search()을 사용하여 수행 할 수 있습니다, 먼저 배열의 키를 찾을 필요가, 당신은 array_search
을 사용할 수 있습니다 기능을 사용하고 배열에서 요소를 제거하려면 unset
기능을 사용할 수 있습니다. 예 :
<?php
$hackers = array ('Alan Kay', 'Peter Norvig', 'Linus Trovalds', 'Larry Page');
print_r($hackers);
// Search
$pos = array_search('Linus Trovalds', $hackers);
echo 'Linus Trovalds found at: ' . $pos;
// Remove from array
unset($hackers[$pos]);
print_r($hackers);
?>
더 많은 배열 관련 기능을 보려면 http://www.php.net/manual/en/ref.array.php을 참조하십시오. 다른 사람이 언급 한 바와 같이 모든
당신이이 unset()
<?php
$array = array('apple', 'orange', 'pear');
unset($array[array_search('orange', $array)]);
?>
이 결과를 어레이 ([0] = 인 > apple [1] => orange [2] => pear [3] => green) 경고 : 5 행의 C : \ Wamp \ www \ test \ test.php에있는 array_search()의 잘못된 매개 변수 개수 Array ([0] => apple [1] => orange [2] => pear [3] => green) – learner
@learner http://ay3.php.net/manual/en/function에 haystack 인수가 없습니다. .array-search.php - 매뉴얼은 당신의 친구입니다. – Gordon
예. 이게 작동합니다 $ array = array ('사과', '오렌지', '배', '녹색'); unset ($ array [array_search ('orange', $ array)]); 하지만 배열 시퀀스가 없습니다. 그것을 바로 잡는 방법 – learner
먼저, 당신은 아래의 "array_search()"&은 "unset()"methodsas을 사용하는 것입니다 : -
이제<?php
$arrayDummy = array('aaaa', 'bbbb', 'cccc', 'dddd', 'eeee', 'ffff', 'gggg');
unset($arrayDummy[array_search('dddd', $arrayDummy)]); // Index 3 is getting unset here.
print_r($arrayDummy); // This will show the indexes as 0, 1, 2, 4, 5, 6.
?>
중 하나를 정렬하지 않고 동일한 배열, 색인을 다시 아래 그림과 같이 배열 값, 당신은 "array_values()"방법을 사용해야합니다 : -
<?php
$arrayDummy = array_values($arrayDummy);
print_r($arrayDummy); // Now, you will see the indexes as 0, 1, 2, 3, 4, 5.
?>
는 도움이되기를 바랍니다.
그러나 array_search가 아무 것도 없기 때문에 false를 반환하면 첫 번째 배열 값이 제거됩니다. – algorhythm
@algorhythm - 지적 해 주셔서 감사합니다! 나는 여러분 모두가 제공 한 솔루션을 사용해야한다고 제안 할 것입니다! –
언급 된 코드 중 하나를 사용하려는 경우 array_search
은 "haystack"에 "needle"이 없으므로이 샘플이 첫 번째 (인덱스가없는) 항목의 설정을 해제합니다. 대신를 사용
<?php
$haystack = Array('one', 'two', 'three');
if (($key = array_search('four', $haystack)) !== FALSE) {
unset($haystack[$key]);
}
var_dump($haystack);
위 예제의 출력 :
Array
(
[0] => one
[1] => two
[2] => three
)
그리고 그 좋은를!
는+1 매우 완벽하게 작동하는 – algorhythm
찾아 배열 값의 여러 인스턴스를 제거하려면,이 솔루션은 @의 조합 아래 코드
$list = array(1,3,4,1,3,1,5,8);
$new_arr=array();
foreach($list as $value){
if($value=='1')
{
continue;
}
else
{
$new_arr[]=$value;
}
}
print_r($new_arr);
요청한대로 PHP 배열 함수를 사용하지 않습니다 ... – algorhythm
을 사용하고 여러 발행 수와 대한 @chyno 솔루션을 삭제 피터의 솔루션 첫 번째 발생을 제거합니다. 그게 내가 사용하는거야.
/**
* @param array $haystack
* @param mixed $value
* @param bool $only_first
* @return array
*/
function array_remove_values(array $haystack, $needle = null, $only_first = false)
{
if (!is_bool($only_first)) { throw new Exception("The parameter 'only_first' must have type boolean."); }
if (empty($haystack)) { return $haystack; }
if ($only_first) { // remove the first found value
if (($pos = array_search($needle, $haystack)) !== false) {
unset($haystack[$pos]);
}
} else { // remove all occurences of 'needle'
$haystack = array_diff($haystack, array($needle));
}
return $haystack;
}
는 또한 여기보고 있습니다 PHP array delete by value (not key)
+1, 내 단점 *, 귀하의 * SUPERB * 대답, 그리고 내 잘못을 지적! 아, BTW, 다른 사람의 답변을 편집하고 이름을 올리면서 업데이트하여 잘못된 부분을 표시 할 수도 있습니다. –
한 기능이 언급되지 않은 array_filter
입니다. 각 요소를 인수로 취하는 콜백 함수를 전달하기 만하면 해당 요소를 유지하거나 제거해야하는 경우 true 또는 false를 반환합니다. 이것은 또한 중복 값을 제거하는 이점이 있습니다.
$myArray = array('one', 'two', 'deleteme', 'three');
$output = array_filter($myArray, function($val) { return $val != 'deleteme'; });
을 그리고 당신은 배열을 인덱스 다시하려는 경우, 당신은과 같이 array_values
에 결과를 전달할 수 있습니다 :
당신은 다음과 같이 사용할 수 있습니다
$output = array_values($output);
이것은 내가 얼마나입니다 그렇게하는 것 :
$terms = array('BMW', 'Audi', 'Porsche', 'Honda');
// -- purge 'make' Porsche from terms --
if (!empty($terms)) {
$pos = '';
$pos = array_search('Porsche', $terms);
if ($pos !== false) unset($terms[$pos]);
}
그러나 array_search가 아무 것도 발견되지 않았기 때문에 false를 반환하면 첫 번째 배열 값이 제거 될 것이다 – algorhythm
만약 있다면 정확히 일치하지 않는 경우 와일드 카드 검색을 수행하는 방법 –
'if (pos === false)'로 일치하는 항목이 없는지 테스트 할 수 있습니다. – Ire