【问题标题】:Get key of multidimensional array?获取多维数组的键?
【发布时间】:2012-01-20 11:36:57
【问题描述】:

例如,我有如下多维数组:

$array = array (
  0 => 
    array (
      'id' => '9',
      'gallery_id' => '2',
      'picture' => '56475832.jpg'
    ),
  1 => 
    array (
      'id' => '8',
      'gallery_id' => '2',
      'picture' => '20083622.jpg'
    ),
  2 => 
    array (
      'id' => '7',
      'gallery_id' => '2',
      'picture' => '89001465.jpg'
    ),
  3 => 
    array (
      'id' => '6',
      'gallery_id' => '2',
      'picture' => '47360232.jpg'
    ),
  4 => 
    array (
      'id' => '5',
      'gallery_id' => '2',
      'picture' => '4876713.jpg'
    ),
  5 => 
    array (
      'id' => '4',
      'gallery_id' => '2',
      'picture' => '5447392.jpg'
    ),
  6 => 
    array (
      'id' => '3',
      'gallery_id' => '2',
      'picture' => '95117187.jpg'
    )
);

如何获取array(0,1,2,3,4,5,6)的密钥?

我尝试了很多示例,但没有任何一个对我有用。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    这很简单,你只需要使用array_keys()

    $keys = array_keys($array);
    

    See it working

    EDIT 对于您的搜索任务,这个函数应该可以完成这项工作:

    function array_search_inner ($array, $attr, $val, $strict = FALSE) {
      // Error is input array is not an array
      if (!is_array($array)) return FALSE;
      // Loop the array
      foreach ($array as $key => $inner) {
        // Error if inner item is not an array (you may want to remove this line)
        if (!is_array($inner)) return FALSE;
        // Skip entries where search key is not present
        if (!isset($inner[$attr])) continue;
        if ($strict) {
          // Strict typing
          if ($inner[$attr] === $val) return $key;
        } else {
          // Loose typing
          if ($inner[$attr] == $val) return $key;
        }
      }
      // We didn't find it
      return NULL;
    }
    
    // Example usage
    $key = array_search_inner($array, 'id', 9);
    

    第四个参数$strict,如果是TRUE,会使用严格的类型比较。所以9 将不起作用,您必须通过'9',因为这些值存储为字符串。返回第一次匹配的键,如果没有找到值,则返回NULL,或者错误时返回FALSE。确保对返回值使用严格的比较,因为0NULLFALSE 都是可能的返回值,如果使用松散的整数比较,它们都将评估为0

    【讨论】:

    • 是的,它正在工作,但是,我需要在数组中搜索,例如 id=9,并获取数组键的返回 id,其中 id = 9
    • 完美运行。真的很感谢 :)
    【解决方案2】:

    试试这个,我想它会帮助你。

    foreach ($array as $key=>$value)
    {
        echo $key.'<br/>';
    
        echo $value['id'].'<br/>';
        echo $value['gallery_id'].'<br/>';
        echo $value['picture'].'<br/><br/>';
    }
    

    【讨论】:

      【解决方案3】:

      有时很容易找到 ;)

      array_keys($array);
      

      array_keys

      【讨论】:

        【解决方案4】:

        可能是http://php.net/manual/en/function.array-keys.php

        自行转换你的二维数组:

        $tmp = null
        foreach($array as $key => $value) {
          $tmp[] = $key;
        }
        
        print_r($tmp);
        

        【讨论】:

          【解决方案5】:

          你的意思是这样的:

          function getKeys($array) { $resultArr = array(); foreach($array as $subArr) { $resultArr = array_merge($resultArr, $subArr); } return array_keys($resultArr); }

          【讨论】:

          • 我想我没有很好地解释我的情况。例如,我正在寻找 id = 9 的数组,我需要一个 wheres 9 的数组键,它会是 0,如果我要寻找 id wheres 8,我会得到 1
          猜你喜欢
          • 1970-01-01
          • 2012-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多