【问题标题】:get key and value from array in php从php中的数组获取键和值
【发布时间】:2016-01-13 14:01:31
【问题描述】:

使用这个数组数据:

$tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
        );

我希望能够得到key和value,我试过了

$tokens["day"];

但它没有返回任何东西。

如何获取每个项目但不在循环内? (例如 foreach)

【问题讨论】:

  • 这是基本的 101 数组:$tokens[1] 访问第二个,$keys = array_keys($tokens); 获取键数组,访问 $keys[0] for 31536000
  • @Rizier123,实际上你错了,调用$tokens[0] 会产生string "year" 的结果,OP 的数组被反转了

标签: php


【解决方案1】:

这是因为day,而不是键。

$tokens["86400"] 等于 day

您需要重新排列您的数组,以便'day' => 86400,而不是相反!

一个简单的方法是使用array_flip

【讨论】:

    【解决方案2】:

    如果您想通过已知值访问密钥,则只需使用 array_flip 翻转数组即可:

    $flipped = array_flip($tokens);
    
    echo $flipped['day']; //86400
    

    或者,如果您有权访问执行此操作的代码,则只需首先以正确的方式创建数组:

    $tokens = array (
        'year'   => 31536000,
        'month'  => 2592000,
        'week'   => 604800,
        'day'    => 86400,
        'hour'   => 3600,
        'minute' => 60,
        'second' => 1
        );
    

    【讨论】:

    • 我认为这是数组倒置时存在的最简单的解决方案!
    【解决方案3】:

    $key = array_search('day', $tokens);可以通过value获取索引

    $tokens["day"];这不会返回任何东西,因为'day'不是索引它是一个值

    您可以使用索引获取数组的值 喜欢 $token['86400'] 这将返回值 "day"

    【讨论】:

      【解决方案4】:

      嗯,这里有几个选项。

      1. 您可以使用 foreach 循环
      2. 您可以使用数组搜索函数传递值并获取键。
      3. 您可以使用 for 循环(但它有点凝灰岩)

      让我们从第一个开始,最简单的:

      $my_array = [
      2334325 => "val_1",
      4354524 => "val_2",
      3213144 => "val_3",
      3232412 => "val_4"
      ];
      
      #here we use a "trick" for the foreach loop
      foreach($my_array as $key => $val)
      {
          echo "Key: $key <br/>Value: $val <br/><br/>";
      }
      

      通过这个循环,您可以快速访问键和值。

      让我们看看第二种方法,即使我建议你使用第一种:

      $my_array = [
      2334325 => "val_1",
      4354524 => "val_2",
      3213144 => "val_3",
      3232412 => "val_4"
      ];
      
      #let's make it dynamic. We create a function
      
      function arrSrc($arg)
      {
          #we declare a index
          $index;
      
          #we search the index by given value
          $index = array_search($arg);
      
          return $index;
      }
      
      echo arrSrc("val_1");
      

      对于其余部分,即使使用 for 循环,我也不想深入。但我认为这可以帮助你。

      -继续破解!

      【讨论】:

        【解决方案5】:

        您必须使用array_flip 交换数组键和值。 这是获得答案的简单方法。

        $flipped_array = array_flip($tokens);
        echo $flipped_array['day'];
        

        结果是: 86400

        【讨论】:

          【解决方案6】:

          已经有很多可用的解决方案,所以我在这里添加我的解决方案。您也可以将array_keys() 用作:

          $tokens = array (
                  31536000 => 'year',
                  2592000 => 'month',
                  604800 => 'week',
                  86400 => 'day',
                  3600 => 'hour',
                  60 => 'minute',
                  1 => 'second'
                  );
          
          $arrayKeys = array_keys($tokens);
          $requiredVal = $tokens[$arrayKeys[3]];
          echo $requiredVal; // result "day"
          

          说明:

          使用array_keys 函数获取键,而不是在原始数组中使用 $tokens[$arrayKeys[3]] 因为这个索引有你需要的值(day)。

          【讨论】:

            猜你喜欢
            • 2011-08-10
            • 1970-01-01
            • 1970-01-01
            • 2015-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多