Подтвердить что ты не робот

Получить ключ от многомерного массива?

Например, у меня есть многомерный массив, как показано ниже:

$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)?

Я пробовал много примеров, но ничего не сработало для меня.

4b9b3361

Ответ 1

Это довольно просто, вам просто нужно использовать array_keys():

$keys = array_keys($array);

Посмотрите, как работает

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 при ошибке. убедитесь, что вы используете строгое сравнение с возвращаемым значением, так как 0, NULL и FALSE - все возможные возвращаемые значения, и все они будут оцениваться с помощью 0, если используются свободные целые сравнения.

Ответ 2

Возможно http://php.net/manual/en/function.array-keys.php?

Преобразуйте двумерный массив самостоятельно:

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

print_r($tmp);

Ответ 3

Попробуйте, я думаю, это поможет вам.

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

    echo $value['id'].'<br/>';
    echo $value['gallery_id'].'<br/>';
    echo $value['picture'].'<br/><br/>';
}

Ответ 4

иногда легко найти;)

array_keys($array);

array_keys

Ответ 5

Вы имеете в виду что-то вроде этого:


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