【问题标题】:logic in php and array sortingphp和数组排序中的逻辑
【发布时间】:2011-11-04 15:05:50
【问题描述】:

我正在尝试将此逻辑集成到我的脚本中,但我无法很好地解决这个问题或找到任何可以执行此操作的搜索功能..

我正在尝试编写一个代码 sn-p,它按照 $onca 的值的顺序排列一个数组。 $onca 是一个随机变化的变量,它的可能值由数组 $oncMail 中的元素组成。每次 $onca 更改为新值时,我希望数组通过获取新变量在数组中的位置并将其与旧值的位置交换来对其进行自我排序,以便新值成为数组中的第一个值和旧值转到旧值数组中索引的位置。为了更有意义,我附上了一张逻辑过程的图片..

【问题讨论】:

    标签: php arrays search indexing


    【解决方案1】:

    每当$onca的值发生变化时,使用array_search找到对应的元素并与第一个交换:

    $array = range(0, 10);
    $onca = 3;
    
    print_r($array); // starting array
    $key = array_search($onca, $array, true);
    reset($array); // so that key() below works as intended, no questions asked
    $firstKey = key($array);
    if ($key !== false && $key !== $firstKey) {
        $temp = $array[$firstKey];
        $array[$key] = $temp;
        $array[$firstKey] = $onca;
    }
    print_r($array); // final array
    

    See it in action.

    【讨论】:

    • 对不起,但我身处一个混乱的世界...... $oncMail 是数组名称。 $oncMail = 数组(email1、email2、email3、email4、email5);该数组没有键...它只是一个带有元素的普通数组。
    • @Nadal:我希望将 $array 重命名为 $oncMail 不会造成混淆。
    • 噢噢噢明白了!!!所以 key 只是索引,你没有重命名键得到它!非常感谢,这真的很有帮助!
    • 我没有理解它,因为我不熟悉 php 中的重置和关键功能
    【解决方案2】:

    这是一种方法:

    $emails = array('me@you.com', 'you@here.com', 'to@from.com', 'there@further.com');
    $email = 'to@from.com';
    $idx = array_search($email, $emails);
    $emails = array_merge(array($email), 
                          array_slice($emails, 0, $idx), 
                          array_slice($emails, $idx+1));
    

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 2010-12-21
      • 1970-01-01
      • 2015-03-31
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多