2014-11-29 3 views
-1

Пример:PHP значение Достаньте из массива, который хранится в массиве ДООС

$arraytest = array(
key => array("test"), 
key2 => value2, 
key3 => value3); 

foreach ($arraytest as $key=>$val) { 
echo $key. "=" .$val. "<br>"; 
} 

Результат:

key=Array 
key2=value2 
key3=value3 

Итак, как я могу получить значение, которое хранящуюся в $arraytest[0]? Мне нужно использовать foreach в foreach для получения

key=test 
key2=value2 
key3=value3 

?

ответ

0

Итак, как я могу получить значение, которое хранится в $arraytest[0]?

Просто используйте $arraytest[0]. Массив - значение $arraytest[0]. Когда вы преобразуете его в строку, он просто скажет «Массив».

Если вместо этого вы хотите итерации по этому массиву, вы уже знаете, как это сделать.

foreach ($arraytest[0] as $key => $val) { 
    echo $key, '=', $val, '<br/>'; 
} 
+0

В этом случае я получаю ошибку 'Invalid аргумент, предоставленный foreach()' – qqqdddqqq

+0

@qqqdddqqq Ну да, если '0' не ваш ключ, это произойдет. Измените его на «ключ». Думаю. http://codepad.org/TrnXJWcA – Brad

0

Ребенок также имеет массив, поэтому вы не можете его эхо напрямую. Проверьте на is_array(). Пример:

$arraytest = array(
    'key' => array("test"), 
    'key2' => 'value2', 
    'key3' => 'value3' 
); 

foreach ($arraytest as $key=>$val) { 
    echo (is_array($val)) ? $key. "=" .$val[0]. "<br>" : $key. "=" .$val. "<br>"; 
} 

Выход:

key=test 
key2=value2 
key3=value3 
+0

Спасибо большое! Если вы не возражаете, можете ли вы добавить некоторое объяснение коду? – qqqdddqqq

+0

Ваш массив '$ arraytest'. Он содержит другой массив по индексу 'key' (' 'key' => array ("test") '). Вы не можете напрямую отреагировать на него, потому что это не строка, int .... Итак, вы должны проверить массив на 'is_array()'. Если это массив, то напечатайте его первый индекс. Здесь значение 'array (" test ")' является тестом, который является первым индексом. – MH2K9

+0

Спасибо вам большое! – qqqdddqqq

0

Решение может быть, что вы проверить, если элемент массива, траверс через него

foreach ($arraytest as $key=>$val) { 
    if (is_array(@val)) 
    { 
     foreach ($val as $k =>$v) { 
      echo $k. "=" .$v. "<br>"; 
     } 
    } 
    else 
     echo $key. "=" .$val. "<br>"; 
} 

Но это идет только на один уровень внутри , вы можете использовать рекурсивный алгоритм для перехода от непредсказуемых чисел уровня внутри

0

Вот рекурсивная функция для обхода любого массива и напечатать его значения:

function valuePrint($mixed, $keyStr = '') 
{ 
    if(is_array($mixed)) { 
     foreach ($mixed as $key => $value) { 
      valuePrint($value, $keyStr . $key . '=>'); // Recursive call 
     } 
    } else { 
     echo $keyStr . $mixed . "\n"; // For html output use '<br/>' instead of "\n" 
    } 
} 

Пример для вызова функции:

$arraytest = array(
    'key' => array('test'), 
    'key2' => 'value2', 
    'key3' => 'value3', 
); 

valuePrint($arraytest); 

Результат вызова будет:

key=>0=>test 
key2=>value2 
key3=>value3 

Также отображается ключ 0 внутреннего массива, поскольку он также является ключом. Я предпочел => вместо = для вывода.

Смежные вопросы