7

メイン配列から削除する必要があるいくつかのインデックスがあります。例えば:

$removeIndex=array(1,3,6);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');

次のような最終結果が必要です。

 $mainArray=array('2'=>'b','4'=>'d','5'=>'e');

ループで実行できる PHP の関数があることは知っていarray_sliceますが、非常に巨大なデータがあり、ここでのループを避けたいと考えています。

4

3 に答える 3

8

おそらく試してみてくださいarray_diff_key

$removeIndex=array(1,3,6);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');
$removeIndex = array_flip($removeIndex);//flip turns values into keys
echo '<pre>';
//compute diff between arr1 and arr2, based on key
//returns all elements of arr 1 that are not present in arr2
print_r(array_diff_key($mainArray, $removeIndex));
echo '</pre>';

これを試したところ、次のように返されました。

配列
(
    [2] => b
    [4] => d
    [5] => え
)
于 2013-06-17T07:55:10.483 に答える
4

を使用できます。配列では、値を次のようにする必要があることarray_diff_keyに注意してくださいremoveIndexkeys

$removeIndex=array('1' => 0,'3' => 0,'6' => 0);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');

$t = array_diff_key($mainArray, $removeIndex);

print_r($t);

@Eliasが指摘したように、値を配列array_flip内のキーに変更するために使用できます。removeIndex

于 2013-06-17T07:56:43.333 に答える
1

unset関数を試してください。これは完璧に機能するはずです。

unset($mainArray[1]);
于 2013-06-17T07:52:49.363 に答える