如何查找數組中存在的值以及如何將其刪除。如果任何PHP內置數組的功能來做到這一點。刪除後,我需要順序索引順序。任何機構知道請幫助我。如何查找數組中的值並使用PHP數組函數將其刪除
回答
要搜索一個數組中的元素,你可以使用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瞭解更多與陣列相關的功能。
你需要先找到陣列的關鍵,這可以通過使用array_search()
一旦這樣做來完成,使用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 2010-06-17 06:43:11
@learner http://de3.php.net/manual/en/function中缺少乾草堆參數.array-search.php - 手冊是你的朋友。 – Gordon 2010-06-17 06:45:28
是的。 這將工作 $ array = array('apple','orange','pear','green'); unset($ array [array_search('orange',$ array)]); 但數組序列丟失。如何糾正該錯誤 – learner 2010-06-17 06:49:17
首先,正如其他人所提到的,您將使用如下所示的「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 2014-09-08 15:23:36
@algorhythm - 謝謝指出!我會建議每個人都應該使用您提供的解決方案! – 2014-09-08 17:48:02
如果您想使用上述任何代碼,請注意,當「乾草堆」中找不到「needle」時array_search
返回FALSE,因此這些樣本會取消設置第一個(零索引)項目。使用這個來代替:
<?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 2014-09-08 16:48:45
爲了找到和在陣列中刪除的值的多個實例,我已用下面的代碼
$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 2014-09-08 15:25:34
這種解決方案的@組合彼得用於刪除多次出現和@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;
}
從我身邊+1,爲你的* SUPERB *答案,並指出我的錯! 哦,順便說一句,你也可以編輯任何人的答案,並更新它,並加上你的名字,標記錯誤的部分。 – 2014-09-08 17:51:11
一個功能還沒有被提及的是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]);
}
- 1. 使用PHP檢查並刪除多維數組中的數組值使用PHP
- 2. Javascript/jQuery查找並刪除數組其餘值中的數組值
- 3. 將php數組傳入javascript,檢查數組值並將其推入新數組
- 4. jQuery查找並刪除使用相同數組的數組中的字符串
- 5. PHP數組 - 刪除某些數組值
- 6. 查找2d數組的行並將其返回到數組中
- 7. 查找重複的多維數組,並從數組中刪除php
- 8. 如何獲取數組的最後一項並將其從數組中刪除?
- 9. 查找數組,其總和使用PHP
- 10. PHP如何刪除多維數組中的重複值併合並其他人
- 11. PHP查找相同的值數組,並創建新的數組
- 12. 使用值的數組檢查密鑰的數組並將其設置爲值
- 13. 如何刪除數組數組中的[「」]?
- 14. 查找數組並將其移動到Multidimesional數組的開頭
- 15. 從其他數組中存在的數組中刪除值
- 16. 如何使用數組splice()函數刪除對象中的子數組?
- 17. 在一個函數中刪除重複的數組值PHP
- 18. 如何使用onclick函數刪除數組中的項目?
- 19. 從數組中刪除所有值=> 0並將其逆轉
- 20. 如何刪除一個鍵並從PHP數組中返回值?
- 21. 如何從PHP中的數組中刪除子數組?
- 22. 如何從php中的大數組中刪除子數組?
- 23. 如何從數組中刪除數組?
- 24. php刪除數組中的值
- 25. 如何使用數組中的某些值調用PHP函數?
- 26. 刪除數組,其中值等於
- 27. 如何從cookie數組中刪除數組中的值?
- 28. 函數後刪除數組?
- 29. 查找基於另一個數組的數組中最大的元素並將其刪除(python 3.x)
- 30. PHP刪除數組的數組?
但是,如果array_search由於沒有發現而返回'false',則第一個數組值將被移除。 – algorhythm 2014-09-08 15:20:02
如果存在沒有完全匹配?如何執行通配符搜索? – 2014-11-12 02:26:58
您可以通過if(pos === false)來測試是否存在匹配 – Ire 2016-03-16 07:46:39