2012-01-12 2 views
1

Привет в PHP Я хочу, чтобы извлечь массив значений в новый массив, с ниже логикойзначения экстракта массива из другого массива

старого массива

index|value 
0=23 
1=34 
2=45 
3=56 
4=56 
5=78 
6=45 
7=67 
8=56 
9=45 

Я хочу новые значения массива хранит индекс от старого в такие серии: 0,1,4,5,8,9 ... так далее.

+1

Где 2 и 3? – hakre

ответ

1

Похоже, вы хотите, чтобы последовательность «взять две, сбросьте две», это сделает это;

$input = array(23, 34, 45, 56, 56, 78, 45, 67, 56, 45); 
$output = array(); 

$count = count($input); 
for($i = 0; $i < $count; $i++) 
{ 
    $output[$i] = $input[$i]; 
    if($i % 4 == 1) 
    $i += 2; 
} 

var_dump($output); 
0

Я не совсем уверен, что вы пытаетесь сделать, но я отвечу как можно лучше.

Чтобы получить новый массив только с значениями из исходного массива, вы можете использовать array_values()DOCs.

Для массива только ключей вы бы использовали array_keys()DOCs.

Чтобы заказать массив по его значениям, вы должны использовать asort()DOCs.

Затем, чтобы получить массив значений заказанные, но с последовательными ключами вы будете использовать:

$array = array(53,23,43); 
sort($array); 

См sort() manual page.

0

Подобно тому, как физические упражнения, решения, который использует на SPL

class stripes extends ArrayIterator { 
    private $partial, $step; 

    public function __construct($array, $step) { 
     parent::__construct($array); 
     $this->step = $step; 
     $this->partial=0; 
    } 

    public function next() { 
     $this->partial++; 
     if ($this->partial >=$this->step) { 
      for($step=$this->step;$step;$step--) 
       parent::next(); 
      $this->partial=0; 
     } 
     parent::next(); 
    } 
} 

Он имеет довольно простое использование:

$input = array(23,24,45,56,56,78,45,67,56,45); 
$iterator = new stripes($input,2); 
$result = iterator_to_array($iterator) 

В $result у вас есть массив, который нужно. Вы можете изменить размер полос, просто изменяя второй параметр из конструктора полос без загрязнения вашего код в реальном времени space.

Ссылки:

ArrayIterator
iterator_to_array

Смежные вопросы