"Kes"

3 Cevap php

Ben n elemanlı bir dizinlenmiş dizi var:

Array(
    'key1'     => 'value1',
    'key2'     => 'value1',
    'key3'     => 'value1',
    ...
    'key<i-1>' => 'value<i-1>',
    'key<i>'   => 'value<i>',
    'key<i+1>' => 'value<i+1>',
    ...
    'key<n>'   => 'value<n>'
)

Nasıl "kesmek": sonuç dizidir yani i_th elemanını (yani kopya + kaldırın):

Array(
    'key1'     => 'value1',
    'key2'     => 'value1',
    'key3'     => 'value1',
    ...
    'key<i-1>' => 'value<i-1>',
    'key<i+1>' => 'value<i+1>',
    ...
    'key<n>'   => 'value<n>'
)

Ben (array_pop biliyorum) ve array_shift () PHP fonksiyonları, ama tuşu ile bir öğe "kesmek" için genel bir var?

Teşekkür ederim.

3 Cevap

Eğer BT adlı dizinde bir öğe kaldırmak sonra almak için aşağıdaki kodu kullanabilirsiniz:

function array_cut(&$array, $key) {
  if(!isset($array[$key])) return null;

  $keyOffset = array_search($key, array_keys($array));
  $result = array_values(array_splice($array, $keyOffset, 1));
  return $result[0];
}

Daha sonra gibi kullanabilirsiniz:

echo "Numerically Index Test:\n";

$a = array(0,1,2,3,4,5,6);
echo array_cut($a, 2) . "\n";
var_dump($a);

echo "------------------------------\n";

echo "Assosiative Index Test:\n";

$b = array('hello' => 'world', 'how' => 'like that', 'where' => 'Stack Overflow');
echo array_cut($b, 'how') . "\n";
var_dump($b);

Çıkışlar:

Numerically Index Test:
2
array(6) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
------------------------------
Assosiative Index Test:
like that
array(2) {
  ["hello"]=>
  string(5) "world"
  ["where"]=>
  string(14) "Stack Overflow"
}

array_splice() belki boş bir değiştirme ile?

Buna ne dersiniz:

unset($array[$i]);