Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get key of multidimensional array?

Tags:

arrays

php

For example, I have multidimensional array as below:

$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'
    )
);

How can I get key of array(0,1,2,3,4,5,6)?

I have tried a lot of examples, but nothing has worked for me.

like image 442
Jurijs Guščins Avatar asked Jan 20 '12 11:01

Jurijs Guščins


People also ask

How do I get a key from multiple arrays?

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 (!

How do you find an array key?

use array_keys() to get an array of all the unique keys. Note that an array with named keys like your $arr can also be accessed with numeric indexes, like $arr[0] .

What is key in array?

The array. keys() method is used to return a new array iterator which contains the keys for each index in the given input array. Syntax: array.keys() Parameters: This method does not accept any parameters. Return Values: It returns a new array iterator.


3 Answers

This is quite simple, you just need to use array_keys():

$keys = array_keys($array);

See it working

EDIT For your search task, this function should do the job:

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);

The fourth parameter $strict, if TRUE, will use strict type comparisons. So 9 will not work, you would have to pass '9', since the values are stored as strings. Returns the key of the first occurence of a match, NULL if the value is not found, or FALSE on error. make sure to use a strict comparison on the return value, since 0, NULL and FALSE are all possible return values and they will all evaluate to 0 if using loose integer comparisons.

like image 54
DaveRandom Avatar answered Oct 22 '22 10:10

DaveRandom


Try this , I think it will help you.

foreach ($array as $key=>$value)
{
    echo $key.'<br/>';

    echo $value['id'].'<br/>';
    echo $value['gallery_id'].'<br/>';
    echo $value['picture'].'<br/><br/>';
}
like image 21
srbhbarot Avatar answered Oct 22 '22 10:10

srbhbarot


sometimes it is to easy to find ;)

array_keys($array);

array_keys

like image 21
rauschen Avatar answered Oct 22 '22 09:10

rauschen