首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP从数组获取相同值的范围。

PHP从数组获取相同值的范围。
EN

Stack Overflow用户
提问于 2015-05-15 08:57:10
回答 3查看 927关注 0票数 1

是否有任何方法可以获得相同值的关键范围并创建一个新的数组?

假设在php中有这样的Array:

代码语言:javascript
运行
复制
$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b','6'=>'a','7'=>'a'];

我怎么能得到这个数组?这有什么功能吗?

代码语言:javascript
运行
复制
$second_array = ['1-3'=>'a','4-5'=>'b','6-7'=>'a'];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-15 09:06:53

循环遍历,提取键,生成范围并插入到新的数组-

代码语言:javascript
运行
复制
$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b'];

$flip = array();
foreach($first_array as $key => $val) {
  $flip[$val][] = $key;
}

$second_array = [];
foreach($flip as $key => $value) {
    $newKey = array_shift($value).' - '.end($value);
    $second_array[$newKey] = $key;
}

输出

代码语言:javascript
运行
复制
array(2) {
  ["1 - 3"]=>
  string(1) "a"
  ["4 - 5"]=>
  string(1) "b"
}
票数 2
EN

Stack Overflow用户

发布于 2015-05-15 09:05:59

对于第一个问题,您可以使用foreach()循环获得每个值的范围。

代码语言:javascript
运行
复制
$first_array = ['1'=>'a','2'=>'a','3'=>'a','4'=>'b','5'=>'b'];

foreach($first_array as $key=>$value)
{
        //do your coding here, $key is the index of the array and $value is the value at that range, you can use that index and value to perform array manipulations
}

关于你的第二个问题,目前还不清楚在那里要执行什么。但是,您想做什么,比如创建一个带有修改索引的新数组,以及在这个foreach()循环中可以完成的其他事情。

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2018-03-14 10:15:03

如果有人还在找答案,我就是这样做的。给定数组

代码语言:javascript
运行
复制
$first_array = ['0'=>'a',
                '1'=>'a',
                '2'=>'a',
                '3'=>'a',
                '4'=>'a',
                '5'=>'b',
                '6'=>'b',
                '7'=>'a',
                '8'=>'a']

我构建了一个多维数组,其中每个元素都是由另外三个元素组成的数组:

代码语言:javascript
运行
复制
[0] - The value in the first array
[1] - The key where the value starts repeating
[2] - The last key where the value stops repeating

密码

代码语言:javascript
运行
复制
$arrayRange = [];

for($i = 0; $i < count($first_array); $i++){

    if(count($arrayRange) == 0){
        // The multidimensional array is still empty
        $arrayRange[0] = array($first_array[$i], $i, $i);
    }else{
        if($first_array[$i] == $arrayRange[count($arrayRange)-1][0]){
            // It's still the same value, I update the value of the last key
            $arrayRange[count($arrayRange)-1][2] = $i;
        }else{
            // It's a new value, I insert a new array
            $arrayRange[count($arrayRange)] = array($first_array[$i], $i, $i);
        }
    }
}

这样就可以得到这样的多维数组:

代码语言:javascript
运行
复制
$arrayRange[0] = array['a', 0, 4]; 
$arrayRange[1] = array['b', 5, 6];
$arrayRange[2] = array['a', 7, 8];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30255411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档