【问题标题】:How to add string into array in PHP?如何在PHP中将字符串添加到数组中?
【发布时间】:2022-01-10 04:36:45
【问题描述】:

我有这些 for 循环来确定连续的数字。到目前为止,我实现的是以字符串形式打印输出。

$arr    = [1,2,3,6,11,5,4,8,9,3];   
for($start=0; $start<=count($arr); $start++){ 

    for($end=$start+1; $end<=count($arr); $end++){ 
        
        $total = $arr[$end] - $arr[$start];
        if($total == 1){
            echo 'Number is '.$arr[$start].','.$arr[$end].'<br/>'; 
        } else {
            echo ''; 
        }
        $arr[$start++]; 

    }
}

我的目标是将输出添加到数组中。

我尝试使用多维数组但没有输出显示。

$arr    = [1,2,3,6,11,5,4,8,9,3];   

$arr3 = [];
for($start=0; $start<=count($arr); $start++){ 

    for($end=$start+1; $end<=count($arr); $end++){ 
        
        $total = $arr[$end] - $arr[$start];
        if($total == 1){ 

            $arr2 = array();
            $arr2[] = $arr[$start].','.$arr[$end].'';
            $arr3[] = $arr2; 

        } else {
             
        }
        $arr[$start++]; 

    }
}

echo '<pre>';
print_r($arr3);
echo '</pre>';
exit;

如果有人可以帮助我,不胜感激。谢谢。

【问题讨论】:

  • 您的目标是按各自子数组中的所有连续数字进行收集/分组吗?

标签: php arrays


【解决方案1】:

您可以简单地使用数组函数,如果像@nice_dev 所说的那样排序对您很重要,那么您必须先对数组进行排序。

$arr    = [1,2,3,6,11,5,4,8,9,3];  
$cons = [] ;
while (array_key_last($arr) != key($arr)) {
    if ((current($arr)+1) == next($arr)) {
        prev($arr);
        $cons[] = current($arr) . ',' . next($arr);
    }
}
print_r($cons);

输出将是:

Array
(
   [0] => 1,2
   [1] => 2,3
   [2] => 8,9
)

【讨论】:

    【解决方案2】:

    你可以先sort()输入数组。这样,收集所有连续元素会变得更加简单。如果任何索引处的值不是前一个索引的 +1,我们将$temp 添加到我们的$results 数组中,并从该索引开始一个新的$temp

    片段:

    <?php
    
    $arr = [1,2,3,6,11,5,4,8,9,3];   
    
    $result = [];
    sort($arr);
    $temp = [];
    for($i = 0; $i < count($arr); ++$i){
        if($i > 0 && $arr[ $i ] !== $arr[$i - 1] + 1){
            $result[] = implode(",", $temp);
            $temp = [];
        }
        $temp[] = $arr[$i];
        if($i === count($arr) - 1) $result[] = implode(",", $temp);
    }
    
    print_r($result);
    

    Online Demo

    【讨论】:

    • 我不明白这行 '$arr[$i - 1] + 1' 。这里显示什么输出。因为我 print_r 或 echo 只显示 'undefined offset' 。我不知道逻辑。
    • @RzjHayabusa 不知道你是怎么知道的。在此处查看在线演示 onecompiler.com/php/3xpx6xhad
    猜你喜欢
    • 2011-04-03
    • 2023-03-14
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2021-12-30
    • 2015-03-09
    • 1970-01-01
    • 2023-01-19
    相关资源
    最近更新 更多