【问题标题】:associative to numeric array in PHP与 PHP 中的数值数组相关联
【发布时间】:2012-02-05 15:08:05
【问题描述】:

我有一个关联数组,我想在数字中使用哪些键。我的意思是:数组有点像这样:

$countries = array
    "AD"  =>  array("AND", "Andorra"),
    "BG"  =>  array("BGR", "Bulgaria")
);

显然 AD 为 0,BG 为 1,但当我打印 $countries[1] 时,它甚至不会显示 "Array"。 当我打印$countries[1][0] 时,它也不显示任何内容。我有键的编号,但我不应该使用关联键。

【问题讨论】:

  • 您想使用字符串键和数字键。为什么不使用带有 id、code、name 架构的 SQL TABLE 来执行此操作?
  • 也许“AD0”并不那么明显。也许它甚至不是真的?
  • fabianhjr:是的,我不能使用 SQL 表,因为脚本有很多模块,我不确定哪个使用哪个。 KerrekSB:为什么?

标签: php arrays associative-array


【解决方案1】:

array_values 的完美用例:

$countries = array_values($countries);

然后您可以通过索引检索值:

$countries[0][0]; // "AND"
$countries[0][1]; // "Andorra"
$countries[1][0]; // "BGR"
$countries[1][1]; // "Bulgaria"

【讨论】:

    【解决方案2】:

    array_keys() 会给你数组的键。 array_values() 将为您提供数组的值。两者都将被数字索引。

    【讨论】:

      【解决方案3】:

      您可以将其转换为数值数组:

          $countries = array(
          "AD"  =>  array("AND", "Andorra"),
          "BG"  =>  array("BGR", "Bulgaria")
      );
      $con=array();
      $i=0;
      foreach($countries as $key => $value){
          $con[$i]=$value;
          $i++;
      }
      echo $con[1][1];
      
      //the result is Bulgaria
      

      【讨论】:

        【解决方案4】:

        有几种解决方法可以得到你想要的。除了制作辅助键映射数组、注入引用或同时保存数字 关联键的 ArrayAccess 可憎之外,您还可以使用以下方法:

         print current(array_slice( current(array_slice($countries, 1)), 0));
        

        这是$countries[1][0] 的解决方法。请注意,数组键似乎仍然以相同的顺序出现;令人困惑。

        【讨论】:

          猜你喜欢
          • 2011-01-04
          • 1970-01-01
          • 1970-01-01
          • 2021-01-15
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 2019-05-12
          相关资源
          最近更新 更多