【发布时间】:2012-04-28 03:39:31
【问题描述】:
这里很头疼,我厌倦了迭代键和值并操纵指针来比较数组键中整数之间的差异。我正在尝试根据减去大于 1 的数组键来拆分和排列此数组,我很早就注意到这是一种将值分成簇的有效方法,如本问题底部所述。
eg:([0] => cat[2] =>fruit [3] => apple) 键等于:
2nd - 1st 键:2-0 = 2 (2>1)
第 3 - 2 个键:3-2 = 1 (1=1)
我已经在问题的底部简要说明了我要完成的工作。
数组代码如下:
$arr1 = array("cat", "Van", "fruit", "apple", "orange", "banana", "car", "car", "boat", "Bike", "truck", "cat", "dog", "bus", "van", "truck", "Sea", "ocean", "sea", "ship", "train", "Land");
$arr2 = array("cat", "fruit", "apple", "orange", "banana", "cat", "dog", "sea", "ocean", "land");
$array = array_uintersect($arr1, $arr2, 'strcasecmp');
//returns:
Array
(
[0] => cat
[2] => fruit
[3] => apple
[4] => orange
[5] => banana
[11] => cat
[12] => dog
[16] => Sea
[17] => ocean
[18] => sea
[21] => Land
)
(下)是我迄今为止编写的代码,作为我尝试实现的分离,如本问题底部所述:
$arr1 = array("cat", "Van", "fruit", "apple", "orange", "banana", "car", "car", "boat", "Bike", "truck", "cat", "dog", "bus", "van", "truck", "Sea", "ocean", "sea", "ship", "train", "Land");
$arr2 = array("cat", "fruit", "apple", "orange", "banana", "cat", "dog", "sea", "ocean", "land");
foreach($array as &$val){
$array2 = $array;
prev($array);
if(key($array2)-key($array)!==1) { //bool to determine if the difference in keys is only 1 integer apart.
$val = array($val);
$val[] = "";
}}
unset($val);
print_r(collapse_multi_arrays($array)); //collapse_multi_arrays is a custom function I have to form a single array from multidimensional ones.
outputs:
Array
(
[0] => cat
[1] =>
[2] => fruit
[3] => apple
[4] => orange
[5] => banana
[6] =>
[7] => cat
[8] => dog
[9] =>
[10] => Sea
[11] => ocean
[12] => sea
[13] =>
[14] => Land
[15] =>
)
(上面的输出)不确定这是否是迭代数组的最明智的方法,但我想使用空值以某种方式进行分块或拆分,以获得如下结果:
Array
(
[0] => Array
(
[0] => cat
)
[1] => Array
(
[2] => fruit
[3] => apple
[4] => orange
[5] => banana
)
[2] => Array
(
[11] => cat
[12] => dog
)
[3] => Array
(
[16] => Sea
[17] => ocean
[18] => sea
)
[4] => Array
(
[21] => Land
)
)
我认为我可以将每个集群附加到一个值 像这样:
Array
(
[0] => cat
[1] => fruit apple orange banana
[2] => cat dog
[3] => Sea ocean sea
[4] => Land
)
//=============================================== ===========
整体解释: 我总体上想要做的是,
从此:
Array
(
[0] => cat
[2] => fruit
[3] => apple
[4] => orange
[5] => banana
[11] => cat
[12] => dog
[16] => Sea
[17] => ocean
[18] => sea
[21] => Land
)
到这里:
Array
(
[0] => cat
[1] => fruit apple orange banana
[2] => cat dog
[3] => Sea ocean sea
[4] => Land
)
当数组键的差异仅相隔 1 个整数时,将数组值聚集在一起。 如果数组键整数的差值大于 1,则将簇附加的数组值传递给下一个数组键, 如 from this *to this* 上面的键值示例
任何帮助、建议、代码将不胜感激,因为我发现很难通过迭代键和值来实现这个目标,干杯。
【问题讨论】:
标签: php multidimensional-array key key-value-coding dynamic-arrays