2016-03-21 4 views
-1

Я использую следующий формат массива. У меня есть 2 пользователя. Я хочу изменить этот массив в соответствии с идентификаторами пользователей.Изменение формата массива в PHP

У меня есть ниже массива в PHP:

Array 
(
[808] => Array 
    (
     [0] => 1 
     [1] => 1 
     [2] => 1 
     [3] => 1 
     [4] => 0 
    ) 

[766] => Array 
    (
     [0] => 0 
     [1] => 1 
     [2] => 0 
     [3] => 0 
     [4] => 1 
    ) 
) 

и я хочу быть в ниже формате:

Array 
(
[0] => Array 
    (
     [808] => 1 
     [766] => 0 
    ) 
[1] => Array 
    (
     [808] => 1 
     [766] => 1 
    )  
[2] => Array 
    (
     [808] => 1 
     [766] => 0 
    ) 
[3] => Array 
    (
     [808] => 1 
     [766] => 0 
    ) 
[4] => Array 
    (
     [808] => 0 
     [766] => 1 
    ) 

) 
+3

Что вы пробовали до сих пор? Stackoverflow здесь не для того, чтобы просто дать вам код, он здесь поможет вам понять, как это сделать. –

+0

Это не настоящий формат массива. Раньше это было чем-то другим, но я изменил его, чтобы сделать это так, используя цикл foreach. Но теперь я застрял, я не могу реформировать этот массив. Пожалуйста, помогите мне –

ответ

1

Попробуйте это :

<?php 
$array = Array 
(
808 => Array 
    (
     '0' => 1, 
     '1' => 1, 
     '2' => 1, 
     '3' => 1, 
     '4' => 0 
    ), 

766 => Array 
    (
     '0' => 0, 
     '1' => 1, 
     '2' => 0, 
     '3' => 0, 
     '4' => 1, 
    ) 
); 

$result = array(); 

foreach($array as $key => $subarray) 
{ 
    foreach($subarray as $subkey =>$subvalue) 
    { 
     if(!isset($result[$subkey])) 
      $result[$subkey] = array(); 

     $result[$subkey][$key] = $subvalue; 
    } 
} 


echo '<pre>'; 
print_r($result); 
echo '</pre>'; 

Выход:

Array 
(
    [0] => Array 
     (
      [808] => 1 
      [766] => 0 
     ) 

    [1] => Array 
     (
      [808] => 1 
      [766] => 1 
     ) 

    [2] => Array 
     (
      [808] => 1 
      [766] => 0 
     ) 

    [3] => Array 
     (
      [808] => 1 
      [766] => 0 
     ) 

    [4] => Array 
     (
      [808] => 0 
      [766] => 1 
     ) 

) 

Рабочий пример: CLICK!

+0

Это работает, спасибо :-) –

0

Вы можете сделать так:

$ids = array_keys($your_array); 
$new_array = array(); 
foreach($i=0; $i<count($your_array[0]); $i++){ 
    foreach($ids as $id){ 
     $new_array[][$id] = $your_array[$id][$i]; 
    } 
} 
Смежные вопросы