嗨我在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 ......等等。
答案 0 :(得分: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);
答案 1 :(得分:0)
我不完全确定你要做什么,但我会尽我所能回答。
要使用原始数组中的值获取新数组,可以使用array_values()
DOCs。
对于只使用array_keys()
DOCs的键的数组。
要按数值对数组进行排序,请使用asort()
DOCs。
然后获取排序的数组值,但使用顺序键:
$array = array(53,23,43);
sort($array);
答案 2 :(得分: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
中,您拥有所需的阵列。你可以改变
条纹的大小只是改变了第二个参数
条带构造函数,而不会污染您的实时代码
空间
参考文献: