5

私は2つのアレイを持っています

$alpha=array('a','b','c','d','e','f');

$index=array('2','5');

2番目の配列からインデックスを持つ最初の配列の項目を削除する必要があります。

(c-indexは2、f-indexは5を削除します)

返される配列は

{'a'、'b'、'd'、'e'}

PHPを使用してこれを行うにはどうすればよいですか?ありがとう

編集

実際には、次のように最終的な配列が必要です

[0]=>a
[1]=>b
[2]=>d
[3]=>e

設定を解除すると、同じインデックスを持つ配列が返されます

0 => string 'a' 
2 => string 'c' 
3 => string 'd' 
4 => string 'e' 
4

5 に答える 5

3
foreach ($index as $key) {
    unset($alpha[$key]);
}

以前はarray_unset()として使用していました。

于 2012-07-26T17:27:28.443 に答える
3

パフォーマンスを向上させるには、これを試してください。

var_dump(array_diff_key($alpha, array_flip($index)));
于 2012-07-26T17:42:54.027 に答える
2

別の方法($alphaまたは$indexたまたま大きくて、すべてをphpに保持したい場合):

function remove_keys($array, $indexes = array()){
  return array_intersect_key($array, array_diff(array_keys($array),$indexes));
}

IDEOneの例

于 2012-07-26T17:34:29.503 に答える
1

$index配列内のキーを反復処理し、反復中に対応するキーを削除しunset()ます。

<?php
$alpha=array('a','b','c','d','e','f');  
$index=array('2','5'); 

foreach ($index as $key) {     
    unset($alpha[$key]);
} 

var_dump($alpha);
?>

出力:

array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [3]=> string(1) "d" [4]=> string(1) "e" } 
于 2012-07-26T17:32:42.227 に答える
0

これをチェックして:

$array = array('a', 'b','c');
unset($array[0]);
$array = array_values($array); //reindexing
于 2012-07-26T17:28:18.370 に答える