I have a nested array in which I want to display a subset of results. For example, on the array below I want to loop through all the values in nested array[1].
Array ( [0] => Array ( [0] => one [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) [1] => Array ( [0] => two [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) ) [2] => Array ( [0] => three [1] => Array ( [0] => 7 [1] => 8 [2] => 9 ) ) )
I was trying to use the foreach function but I cannot seem to get this to work. This was my original syntax (though I realise it is wrong).
$tmpArray = array(array("one",array(1,2,3)),array("two",array(4,5,6)),array("three",array(7,8,9))); foreach ($tmpArray[1] as $value) { echo $value; }
I was trying to avoid a variable compare on whether the key is the same as the key I want to search, i.e.
foreach ($tmpArray as $key => $value) { if ($key == 1) { echo $value; } }
Any ideas?
PHP foreach modify array elementsBy using the ampersand operator (&), the foreach statement works with a reference to the array element. <? php $vals = [1, 2, 3, 4, 5]; foreach ($vals as &$val) { $val *= 2; } print_r($vals); In the example, we go through the array of integers and multiply each element by two.
Answer: Use the PHP nested loop You can simply use the foreach loop in combination with the for loop to access and retrieve all the keys, elements or values inside a multidimensional array in PHP.
In the foreach loop, the $element variable will contain the value of the current array item for every iteration. The loop continues till the last element in the array. In the case of the two-dimensional array, we can use the foreach loop to access the first nested array in the first iteration and so on.
If you know the number of levels in nested arrays you can simply do nested loops. Like so:
// Scan through outer loop foreach ($tmpArray as $innerArray) { // Check type if (is_array($innerArray)){ // Scan through inner loop foreach ($innerArray as $value) { echo $value; } }else{ // one, two, three echo $innerArray; } }
if you do not know the depth of array you need to use recursion. See example below:
// Multi-dementional Source Array $tmpArray = array( array("one", array(1, 2, 3)), array("two", array(4, 5, 6)), array("three", array( 7, 8, array("four", 9, 10) )) ); // Output array displayArrayRecursively($tmpArray); /** * Recursive function to display members of array with indentation * * @param array $arr Array to process * @param string $indent indentation string */ function displayArrayRecursively($arr, $indent='') { if ($arr) { foreach ($arr as $value) { if (is_array($value)) { // displayArrayRecursively($value, $indent . '--'); } else { // Output echo "$indent $value \n"; } } } }
The code below with display only nested array with values for your specific case (3rd level only)
$tmpArray = array( array("one", array(1, 2, 3)), array("two", array(4, 5, 6)), array("three", array(7, 8, 9)) ); // Scan through outer loop foreach ($tmpArray as $inner) { // Check type if (is_array($inner)) { // Scan through inner loop foreach ($inner[1] as $value) { echo "$value \n"; } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With