php迭代键和值,并根据数组键整数差分为子数组
这里最让人头疼的是,我累坏了迭代键和值,并操纵指针来比较数组键中整数之间的差异。我试图根据大于1的数组键的减法来拆分和排列这个数组,我注意到这是一种有效的方法,可以将值分成簇,如问题底部所述 例如:([0]=>猫[2]=>水果[3]=>苹果)键等同于: 第二-第一键:2-0=2(2>1) 第三-第二键:3-2=1(1=1) 我已经在问题的底部对我想要完成的事情做了一个简明的解释 数组代码如下:php迭代键和值,并根据数组键整数差分为子数组,php,multidimensional-array,key,key-value-coding,dynamic-arrays,Php,Multidimensional Array,Key,Key Value Coding,Dynamic Arrays,这里最让人头疼的是,我累坏了迭代键和值,并操纵指针来比较数组键中整数之间的差异。我试图根据大于1的数组键的减法来拆分和排列这个数组,我注意到这是一种有效的方法,可以将值分成簇,如问题底部所述 例如:([0]=>猫[2]=>水果[3]=>苹果)键等同于: 第二-第一键:2-0=2(2>1) 第三-第二键:3-2=1(1=1) 我已经在问题的底部对我想要完成的事情做了一个简明的解释 数组代码如下: $arr1 = array("cat", "Van", "fruit", "apple", "oran
$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] => 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,则向下一个数组键传递集群附加的数组值,
如上面示例中的从this*到this*键值
任何帮助、建议和代码都将不胜感激,因为我发现要实现这一目标很难同时迭代键和值。干杯。我想到的是一个简单的解决方案,如下所示(经过测试并产生想要的结果):
我不确定你在这里想要实现什么,因为这看起来有点奇怪;)无论您试图解决的根本问题是什么,我认为有一个比这个更优雅的解决方案。+1简单优雅的解决方案!!:)你救了我很多麻烦,因为我自己从来没有处理过这样的事情。该脚本用于文本处理,从列表中查找关键字,然后进一步处理。