Например, у меня есть многомерный массив, как показано ниже:
$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)
?
Я пробовал много примеров, но ничего не сработало для меня.
Это довольно просто, вам просто нужно использовать 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
если будут использоваться свободные целые сравнения.
Возможно, http://php.net/manual/en/function.array-keys.php ?
Преобразуйте свой двумерный массив самостоятельно:
$tmp = null foreach($array as $key => $value) { $tmp[] = $key; } print_r($tmp);
Попытайтесь, я думаю, это вам поможет.
foreach ($array as $key=>$value) { echo $key.'<br/>'; echo $value['id'].'<br/>'; echo $value['gallery_id'].'<br/>'; echo $value['picture'].'<br/><br/>'; }
иногда его легко найти;)
array_keys($array);
array_keys
Вы имеете в виду что-то вроде этого:
function getKeys($array) { $resultArr = array(); foreach($array as $subArr) { $resultArr = array_merge($resultArr, $subArr); } return array_keys($resultArr); }
function getKeys($array) { $resultArr = array(); foreach($array as $subArr) { $resultArr = array_merge($resultArr, $subArr); } return array_keys($resultArr); }