2015-06-14 4 views
1

Эта петляпреобразование многомерного массива в PHP

$demo = array(); 
for($i=0;$i<count($big_array);$i++){ 
    echo 'Page['.$i.'][0]: '.$big_array[$i][0].'<br>'; 
    for($j=1;$j<count($big_array[$i]);$j++){ 

     echo 'Email['.$i.']['.$j.']: '.$big_array[$i][$j].'<br>'; 
     $demo[$big_array[$i][$j]][] = $big_array[$i][$j-1]; //something is not ok with this 
    } 
} 

дает мне это:

Page[0][0]: http://www.example.com/impressum 
Email[0][1]: [email protected] 
Email[0][2]: [email protected] 
Page[1][0]: http://www.example.com/termsofuse 
Email[1][1]: [email protected] 
Email[1][2]: [email protected] 
Email[1][3]: [email protected] 
Email[1][4]: [email protected] 
Page[2][0]: http://www.example.com/adpolicy 
Email[2][1]: [email protected] 
Email[2][2]: [email protected] 
Email[2][3]: [email protected] 
Email[2][4]: [email protected] 

Как я могу преобразовать его, чтобы получить этот результат:

[email protected] 
    http://www.example.com/impressum 
[email protected] 
    http://www.example.com/impressum 
    http://www.example.com/termsofuse 
    http://www.example.com/adpolicy 
[email protected] 
    http://www.example.com/termsofuse 
[email protected] 
    http://www.example.com/termsofuse 
[email protected] 
    http://www.example.com/termsofuse 
    http://www.example.com/adpolicy 
[email protected] 
    http://www.example.com/adpolicy 

var_dump ($ big_array):

array (0 => array (0 => 'http://www.example.com/impressum', 1 => '[email protected]', 2 => '[email protected]',), 1 => array (0 => 'http://www.example.com/termsofuse', 1 => '[email protected]', 2 => '[email protected]', 3 => '[email protected]', 4 => '[email protected]',), 2 => array (0 => 'http://www.example.com/adpolicy', 1 => '[email protected]', 2 => '[email protected]', 3 => '[email protected]', 4 => '[email protected]',),) 
+0

Можете ли вы 'var_export()' исходный массив пожалуйста? – FrankerZ

+0

Несомненно, посмотрите на это – erdomester

+0

связь между вводом и выводом не понятна –

ответ

1
$array = array (0 => array (0 => 'http://www.example.com/impressum', 1 => '[email protected]', 2 => '[email protected]',), 1 => array (0 => 'http://www.example.com/termsofuse', 1 => '[email protected]', 2 => '[email protected]', 3 => '[email protected]', 4 => '[email protected]',), 2 => array (0 => 'http://www.example.com/adpolicy', 1 => '[email protected]', 2 => '[email protected]', 3 => '[email protected]', 4 => '[email protected]',),); 

print_r($array); 

$final = array(); 
foreach ($array as $group) 
{ 
    for ($i=1; $i<count($group); $i++) 
    { 
     $final[$group[$i]][] = $group[0]; 
    } 
} 

print_r($final); 

Here - результат игровой площадки PHP.

Чтобы отформатировать его, как ваш пример:

foreach ($final as $email => $links) 
{ 
    echo $email . "\n"; 
    foreach ($links as $link) 
    { 
     echo " " . $link . "\n"; 
    } 
} 
+0

Прохладный! Мне удалось получить тот же результат, установив мою строку как '$ demo [$ big_array [$ i] [$ j]] [] = $ big_array [$ i] [0];'. Любые идеи о том, как распечатать результат так, как я показал в своем вопросе? – erdomester

+0

Как эхо с пробелами в вашем вопросе? Похоже, у вас в вашем ответе есть случайные пробелы. Отформатируйте его точно так, как вы хотите, чтобы он отображался. – FrankerZ

+0

Эти места для более четкой презентации – erdomester

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