【问题标题】:Getting to the next key in an array获取数组中的下一个键
【发布时间】:2010-03-10 02:33:38
【问题描述】:

假设我知道有键“twoVal”,但我不知道它后面是什么。我如何获得下一个键?我应该知道键“twoVal”的位置吗?还是有其他方法?

$arr = array('Cool Viski' => array('oneVal' => '169304',
                                   'twoVal' => '166678',
                                   'threeVal' => '45134'));

【问题讨论】:

    标签: php


    【解决方案1】:
    $keys = array_keys($arr['Cool Viski']);
    $position = array_search('twoVal', $keys);
    if (isset($keys[$position + 1])) {
        $keyAfterTwoVal = $keys[$position + 1];
    }
    

    【讨论】:

    • 我认为,无论 OP 试图以其他方式做什么,而不是简单的数组操作,它都会更聪明,但它回答了这个问题。 :)
    • 这正是我想要做的,而且更干净。感谢分享。
    【解决方案2】:
    $arr = array('Cool Viski' => array('oneVal' => '169304',
                                       'twoVal' => '166678',
                                       'threeVal' => '45134'));
    foreach($arr as $s=>$v){
        foreach($v as $val){
            if(key($v) == "twoVal"){
                $t=next($v);
                print "next key: ".key($v)."\n";
                print "next key value is: ".$t."\n";;
            }else{
                next($v);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可能对各种array seeking functions 感兴趣,但是除非 PHP 数组仅由整数索引,否则无法保证键的顺序。

      【讨论】:

      • 取自 php.net/manual/en/language.types.array.php: An array in PHP is actually an ordered map. 我会说这是对键顺序的保证。
      • 另外,这并不是解决给定问题的真正方法,因为您首先需要使用已知键获取指向元素的内部指针,这无法有效地完成据我所知,您链接到的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 2019-04-29
      • 2013-12-27
      • 1970-01-01
      • 2013-04-23
      相关资源
      最近更新 更多