我有一个如下数组:
5-9-21,
5-10-22,
5-10-22,
5-11-23,
3-17-29,
3-19-31,
3-19-31,
1-25-31,
7-30-31
我会动态获取一个值。然后我必须将该值与数组的中间部分进行比较。
9,
10,
10,
11,
17,
19,
19,
25,
30
如果它匹配,那么我必须从数组中删除整个部分。 例如。如果我动态得到一个值是19,那么我将与该数组匹配。 3-19-31有两次。因此它将删除所有3-19-31。用“ - ”爆炸后。
我该怎么做?
答案 0 :(得分:2)
您可以使用array_filter
来获取新数组。
$new_arr = array_filter($old_arr, function($var) use ($input) {
$ret = explode('-', $var);
return !(isset($ret[1]) && $ret[1] === $input);
});
或者使用普通循环,然后使用unset删除值。
for ($arr as $key => $value) {
$ret = explode('-', $value);
if (isset($ret[1]) && $ret[1] === $input) {
unset($arr[$key]);
}
}
答案 1 :(得分:2)
foreach($array as $key=>$value){
$parts = explode('-', $value);
if($parts[1] == $search) {
unset($array[$key]);
}
}
或者,如果您的搜索是数组
foreach($array as $key=>$value){
$parts = explode('-', $value);
if(in_array($parts[1], $search)) {
unset($array[$key]);
}
}
答案 2 :(得分:0)
你可以试试这个......
$arr; // your array
$value = 19;
foreach ($arr as $key=>$a)
{
if(strpos($a, "-".$value."-") !== false)
unset($arr[$key]);
}
答案 3 :(得分:0)
有几种方法可以做到这一点。如果您的三元组的第一个元素中只有一个数字,则以下代码应该有效;
$triplet_array = array(5-9-21, 5-10-22, 5-10-22, 5-11-23, 3-17-29, 3-19-31, 3-19-31, 1-25-31, 7-30-31);
$i = 0;
foreach($triplet_array as triplet){
$middle = substring($triplet,2,0);
if($middle == $my_dynamic_value) unset($triplet_array[$i]);
$i++
}
但是,如果第一部分总是不会只包含一个数字;
foreach($triplet_array as triplet){
$this_triplet = explode('-',$triplet);
if($this_triplet[1] == $my_dynamic_value) unset($triplet_array[$i]);
$i++
}
希望这会有所帮助: - )
答案 4 :(得分:0)
使用此功能,这将为您提供匹配的所有键:
function custom_array_search($keyword,$array){
if(!is_array($array)){
return false;
}
$ret_keys = array();
foreach($array as $key=>$value){
if(strpos("-{$keyword}-",$value)!==false){
$ret_keys[] = $key;
}
}
return $ret_keys;
}
此函数将为您提供数组中的所有键。
现在您可以删除那些,即取消设置该阵列中的所有键。 :)
答案 5 :(得分:0)
<?php
$arr = array('5-9-21', '5-10-22', '5-10-22', '5-11-23', '3-17-29', '3-19-31', '3-19-31', '1-25-31', '7-30-31');
$k = '10';
#print_r($arr);
foreach ($arr as $key => $value)
{
$t = explode('-',$value);
if($t[1] == $k)
{
unset($arr[$key]);
#echo "deleted<br>";
}
}
#print_r($arr);
?>