php 算法之切割数组,不用array_chunk(),算法之二,取数组的差值,不用array_diff()

时间:2020-12-31 11:27:05

用php写算法切割数组,不用array_chunk();算法例如以下所看到的。

<?php
//$array 数组
//$size 每一个数组的个数
//每一个数组元素是否默认键值
function array_chunk_list($array, $size, $preserve_keys = false)
{
reset($array);
$i = 0;
foreach ($array as $key => $value) {
// 是否存在这个值
if (! isset($newarray[$i])) {
$newarray[$i] = array();
}
if (count($newarray[$i]) < $size) { // 先推断的问题
if ($preserve_keys == false) {
$newarray[$i][] = $value;
} else {
$newarray[$i][$key] = $value;
}
} else {
$i++;
if ($preserve_keys == false) {
$newarray[$i][] = $value;
} else {
$newarray[$i][$key] = $value;
}
}
}
return $newarray;
} $array=array(1,2,3,4,5,6,7);
print_r(array_chunk_list($array, 2,true));

用php写算法取数组的差值。不用array_diff():代码例如以下

function arraydiffemulation($arrayform, $arrayagaist)
{
$arrayagaist = array_flip($arrayagaist);
foreach ($arrayform as $key => $value) {
if (isset($arrayagaist[$value])) {
unset($arrayform[$key]);
}
}
return $arrayform;
} $arrayform=array('a','b','c','d','e');
$arrayagaist=array('b','c','d');
print_r(arraydiffemulation($arrayform, $arrayagaist));