---
title: "Hämta värde ur multidimensionell array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/184580-hämta-värde-ur-multidimensionell-array"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2010-09-09T21:07:52.000Z"
updated: "2010-10-13T08:26:17.000Z"
replies: 3
views: 754
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/184580-hämta-värde-ur-multidimensionell-array"
---

# Hämta värde ur multidimensionell array

## #1 — learn, 2010-09-09T21:07Z

Lite knep å knåp för den klurige...

Jag har en multidimensionell array som jag vill kunna plocka ut värden ifrån mha en textsträng i formatet "sökväg/till/värdet". Arrayen vet jag alltså inte hur den ser ut i förväg.

Närmare förklaring:

```php

function getValue($array, $path)
{
  // Här händer det...

  return $value;
}

$array = array(
  'ett' => 'Ett'
  'tva' => 'Två'
  'tre' => array(
    'tretva' => array(
      'tretre' => 'Tre'
    )
  )
);

getValue($array, 'tva'); // Två

getValue($array, 'tre/tretva/tretre'); // Tre

getValue($array, 'tre/tretva'); // array('tretre' => 'Tre')

getValue($array, 'fyra'); // null
```

Hur ska min funktion se ut? Jag lyckas inte...

Permalänk: https://www.webforum.nu/p/184580

## #2 — SPiN, 2010-09-09T21:36Z

Ett enkelt förfarande kan ju vara;

```php
function array_xpath(&$array, $path) {
    $nodes = explode('/', $path);

    return __helper_array_xpath($array, $nodes);
}
function __helper_array_xpath(&$base, &$nodes) {
    if (($node = array_shift($nodes)) && isset($base[$node])) {
        if (sizeof($nodes) > 0 && is_array($base[$node])) {
            return __helper_array_xpath($base[$node], $nodes);
        } elseif (sizeof($nodes) == 0) {
            return $base[$node];
        }
    }
    return false;
}

$a = array(
	'ett' => 'hej',
	'tva' => array(
		'tre' => 'hopp',
		'fyra' => array(
			'fem' => 'stopp!'
		)
	)
);

echo array_xpath($a, 'tva/fyra/fem'); // stopp!
echo array_xpath($a, 'nio/trettioett'); // [false]
```

Ett annat förfarande kan ju vara att titta på hur CakePHP har löst det, dom sitter inne på någon typ av XPath-för-arrayer-funktion: <http://api.cakephp.org/view_source/set/#line-373>

Permalänk: https://www.webforum.nu/p/2250834

## #3 — learn, 2010-10-13T08:18Z

Hmm, tack för ditt tips, får det inte riktigt att funka. Någon som kikat på CakePHP's lösning?

Någon annan som har förslag på hur jag kan lösa detta på ett enkelt sätt? Som det är idag använder jag funktionen eval() vilket inte känns helt rätt...

Permalänk: https://www.webforum.nu/p/2256760

## #4 — SPiN, 2010-10-13T08:26Z

Hur menar du att du inte får det att fungera? Det fungerar enligt spec. från ditt första inlägg.

Permalänk: https://www.webforum.nu/p/2256762

---

Tråden på webben: https://www.webforum.nu/amne/php/184580-hämta-värde-ur-multidimensionell-array
