-1

他の配列(サブ配列)を含む配列があります。キーの特定の値で構成される部分配列のインデックスを取得する必要があります。例えば。これが私の配列です:

Array
(
[0] => Array
    (
        [id] => 353
        [name] => account_2
        [ips] => 
        [tech_prefix] => 
        [password] => 
        [id_voip_hosts] => 
        [proxy_mode] => 
        [auth_type] => ani
        [ani] => 526466
        [accname] => 
        [protocol] => 
        [port] => 
        [orig_enabled] => 1
        [term_enabled] => 
        [orig_capacity] => 
        [term_capacity] => 
        [orig_rate_table] => 
        [term_rate_table] => 
        [id_dr_plans] => 
        [orig_groups] => 
        [term_groups] => 
        [notes] => 
    )

[1] => Array
    (
        [id] => 352
        [name] => account_3
        [ips] => 
        [tech_prefix] => 
        [password] => 
        [id_voip_hosts] => 
        [proxy_mode] => 
        [auth_type] => ani
        [ani] => 1345436
        [accname] => 
        [protocol] => 
        [port] => 
        [orig_enabled] => 1
        [term_enabled] => 
        [orig_capacity] => 
        [term_capacity] => 
        [orig_rate_table] => 
        [term_rate_table] => 
        [id_dr_plans] => 
        [orig_groups] => 
        [term_groups] => 
        [notes] => 
    )

[2] => Array
    (
        [id] => 354
        [name] => account_4
        [ips] => 
        [tech_prefix] => 
        [password] => 
        [id_voip_hosts] => 
        [proxy_mode] => 
        [auth_type] => ani
        [ani] => 472367427
        [accname] => 
        [protocol] => 
        [port] => 
        [orig_enabled] => 1
        [term_enabled] => 
        [orig_capacity] => 
        [term_capacity] => 
        [orig_rate_table] => 
        [term_rate_table] => 
        [id_dr_plans] => 
        [orig_groups] => 
        [term_groups] => 
        [notes] => 
    )

)

私が必要なもの。たとえば、配列サブ配列 [2] から削除する必要があります。unset($myarray[2]) を使用する方法は知っていますが、このインデックスを取得するにはどうすればよいですか [2]。[ani] キー値 472367427 しか知らない場合。var でこの "[2]" を取得して unset コマンドに挿入する方法。= 1345436 であるキー [ani] を持つサブアレイを削除する必要がある場合 (配列 [1] にあります)。キーの値で配列のインデックスを検索する方法はありますか。繰り返しますが、多次元配列の [ani] キーでこのインデックス [2] または [1] を見つける方法は? ありがとう!

4

5 に答える 5

2

これにはいくつかの方法がありますが、array_filterおそらく最もスケーラブルです。取り除きたい値を検索するコールバック関数を作成し、それを配列のフィルターとして使用する必要があります。

function filterCallback($value) {
   if($value['ani'] == "472367427") {
      return false;
    } else {
      return true;
    }
}

$array = array_filter($array,'filterCallback');

foreachこれの利点は、ループ内で実行する必要なく、フィルター処理ロジックを抽象化 (およびより複雑にする) できることです。

http://www.php.net/manual/en/function.array-filter.phpを参照してください。

于 2013-07-09T12:58:52.257 に答える
2

私はこれがうまくいくと思います(テストされていません - しかし、あなたはアイデアを得るでしょう)

foreach ($arrays as $key => $item)
{
    if ($item['ani'] === '472367427')
    {
        unset($arrays[$key]);
    }
}
于 2013-07-09T12:55:19.157 に答える
1
$remove = 472367427;

foreach($your_array as $key => $values) {
    if(!empty($values['ani'] && $values['ani'] == $remove) {
        unset($your_array[$key]);
    }
}
于 2013-07-09T12:55:29.650 に答える
0

array_searchこのようなインデックスとunset要素を取得するために使用できます

$a = array('one', 'two', 'three', 472367427, 'four', 'five');
unset($a[array_search(472367427, $a)]);
于 2013-07-09T13:01:52.867 に答える
0

探している ani 値が既にわかっている場合:

$yourani = 'Your known ani value';

foreach($myarray AS $array){
   if($array['ani'] == $yourani){
      unset($array);
   }
}
于 2013-07-09T12:56:07.967 に答える