【问题标题】:How do I get index of an string array on php?如何在php上获取字符串数组的索引?
【发布时间】:2011-06-23 13:53:09
【问题描述】:

假设我有一个多维字符串数组:

.food = array(
            'vegetable' => array(
                               'carrot' => 'blablue', 
                               'potato' => 'bluebla', 
                               'cauliflower' => 'blabla'
                           ), 
            'Fruit' => array(
                               'apple' => 'chicken65', 
                               'orange' => 'salsafood', 
                               'pear' => 'lokkulakka'
            )
);

是否可以通过使用索引作为数字来访问数组,而不是使用键的名称? 因此,要访问 chicken65 ,我将输入 echo $food[1][0];我不想使用数字作为键,因为它是一个大数组,如果我使用字符串作为键,它会更加用户友好,它会让我在高级级别上执行 for 循环。

【问题讨论】:

  • 如果你不想用数字作为key,你问怎么做?
  • 为什么不使用 foreach 而不是 for 循环。

标签: php arrays string indexing numbers


【解决方案1】:

您可以使用 foreach 循环来实现与典型 for 循环大致相同的功能。

foreach ($foods as $key => $value) {
    //For the first iteration, $key will equal 'vegetable' and $value will be the array
}

【讨论】:

    【解决方案2】:

    $food[1][0] != $food[1]['apple'],所以在这种情况下你不能使用数字键。

    【讨论】:

      【解决方案3】:

      试试

      $new_array = array_values($food);
      

      但是,变量不能以. 开头。它应该以 $

      开头

      【讨论】:

      • array_values 这就是我需要的:D
      • 英语不是我的母语
      【解决方案4】:

      您可能想尝试函数 array_values 但由于您正在处理多用途数组,这里是一个 php 程序员发布的解决方案

      http://www.php.net/manual/en/function.array-values.php#103905

      但使用 foreach 代替 for 会更容易。

      【讨论】:

      • array_values 这就是我需要的:D
      【解决方案5】:

      您可以在数组上使用 array_keys()。生成的数组可以通过 for 循环遍历并为您提供关联键。

      我将向您展示第一个维度:

      $aTest = array('lol' => 'lolval', 'rofl' => 'roflval');
      $aKeys = array_keys($aTest);
      $iCnt = count($aKeys);
      
      for($i = 0; $i < $iCnt; ++$i)
      {
        var_dump($aTest[$aKeys[$i]]);
      }
      

      您需要对两个维度执行此操作,但我不建议这样做。它实际上比大多数其他解决方案更令人讨厌和更慢。

      【讨论】:

      • 当你可以简单地使用没有它的 foreach 时,你为什么要这样做?
      • I 不会这样做,I 会使用 foreach。我认为这个解决方案更接近于 OP 要求(没有双关语)。
      【解决方案6】:

      我不认为有什么本土的东西可以走这条路。

      您似乎正在尝试扩展数组的使用。

      你应该在这个上使用 OOP。

      创建一个 FoodFamily 对象和一个 Food 对象,如果需要,您可以在其中存储数组,并且您可以编写用户友好的代码并在需要时添加索引。

      OOP 几乎总是答案 :)

      【讨论】:

        猜你喜欢
        • 2011-01-27
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多