1

私は次のような配列を持っています:

 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は2回あります。したがって、3-19-31をすべて削除します。「-」で爆発した後。

これどうやってするの?

4

6 に答える 6

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]);
  }
}
于 2012-09-03T06:50:21.477 に答える
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]);
    }
}
于 2012-09-03T06:56:25.067 に答える
0

あなたはこれを試すことができます...

$arr; // your array
$value = 19;

foreach ($arr as $key=>$a)
{
    if(strpos($a, "-".$value."-") !== false)
        unset($arr[$key]);
}
于 2012-09-03T06:52:34.137 に答える
0

これを行う方法はいくつかあります。トリプレットの最初の要素に常に 1 桁しかない場合は、次のコードが機能するはずです。

$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++
}

ただし、最初の部分に常に 1 桁しか含まれない場合。

foreach($triplet_array as triplet){
  $this_triplet = explode('-',$triplet);
  if($this_triplet[1] == $my_dynamic_value) unset($triplet_array[$i]);
  $i++
}

お役に立てれば :-)

于 2012-09-03T06:54:23.553 に答える
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;
}

この関数は、配列内のすべてのキーを提供します。

これで、それらを削除できます。つまり、その配列からすべてのキーを設定解除できます。:)

于 2012-09-03T06:55:10.720 に答える
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);
?>
于 2012-09-03T06:55:52.417 に答える