2016-06-13 4 views
0

У меня есть массив переменных $ данные, как показано ниже:Добавить новые элементы массива в PHP

$data = array (
'deptIDid' =>array(
    'userid' =>array(
     '12:00' => array(
      'bookname'= 'Chemistry', 
      'return'= 'false' 
      ) 

     '12:01' => array(), 
     '12:02' => array(), 
     '12:03' => array(), 
     '12:04' => array(), 
     '12:05' => array(), 
     '12:06' => array(), 
     '12:07' => array(
      'bookname'= '' 
      'return'= 'true' 
     ), 
     '12:08' => array(
      'bookname'= 'Math', 
      'return'= 'false' 
     ), 
     '12:09' => array(), 
     '12:10' => array(), 
     '12:11' => array(), 
     '12:12' => array(), 
    ), 
) 
) 

Логика есть пользователь заимствован книга в библиотеке отдела. Внутри массива времени есть два элемента: userid и return. То, что мне нужно сделать, - это когда массив времени не имеет значения. Он должен добавить значение, подобное с раннего времени, до return значение true. Вывод должен быть:

$data = array (
'deptIDid' =>array(
    'userid' =>array(
     '12:00' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false' 
      ) 

     '12:01' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false' 
      ), 
     '12:02' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false'), 
     '12:03' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false'), 
     '12:04' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false'), 
     '12:05' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false'), 
     '12:06' => array(
      'bookname'=> 'Chemistry', 
      'return'=> 'false'), 
     '12:07' => array(
      'bookname'=> 'Chemistry' 
      'return'=> 'true' 
     ), 
     '12:08' => array(
      'bookname'=> 'Math', 
      'return'=> 'false' 
     ), 
     '12:09' => array(
      'bookname'=> 'Math', 
      'return'=> 'false' 
     ), 
     '12:10' => array(
      'bookname'=> 'Math', 
      'return'=> 'false' 
     ), 
     '12:11' => array(
      'bookname'=> 'Math', 
      'return'=> 'false' 
     ), 
     '12:12' => array(
      'bookname'=> 'Math', 
      'return'=> 'false' 
     ), 
    ), 
    ) 
) 
+1

Какую логику вы пробовали? –

ответ

0

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

Проверьте массив пустой, то добавьте массив, как описано ниже:

$val = ''; 
foreach($data['deptIDid']['userid'] as $key=>$d) { 
if(trim($data['deptIDid']['userid'][$key]['bookname']) != '') { 
    $val= $data['deptIDid']['userid'][$key]['bookname']; 
} 
if(empty($d) || $data['deptIDid']['userid'][$key]['bookname'] == '') { 
    $data['deptIDid']['userid'][$key] = array('bookname'=> $val,'return'=> 'false'); 
} 
} 
print '<pre>';print_r($data); 
exit; 

Выход:

Array 
(
    [deptIDid] => Array 
     (
      [userid] => Array 
       (
        [12:00] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:01] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:02] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:03] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:04] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:05] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:06] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:07] => Array 
         (
          [bookname] => Chemistry 
          [return] => false 
         ) 

        [12:08] => Array 
         (
          [bookname] => Math 
          [return] => false 
         ) 

        [12:09] => Array 
         (
          [bookname] => Math 
          [return] => false 
         ) 

        [12:10] => Array 
         (
          [bookname] => Math 
          [return] => false 
         ) 

        [12:11] => Array 
         (
          [bookname] => Math 
          [return] => false 
         ) 

        [12:12] => Array 
         (
          [bookname] => Math 
          [return] => false 
         ) 

       ) 

     ) 

) 
+0

Спасибо за внимание. Но '12: 08' -' 12: 12' bookname - Math. –

+0

@BerryStrawberry У меня есть обновленный код. –

0

Скорректированный код DHARA в бит:

$prevData = []; 
foreach($data['deptIDid']['userid'] as $key => $d) { 
    if(empty($d)) { 
     $data['deptIDid']['userid'][$key] = $prevData; 
    } else { 
     $prevData = $d; 
    } 
} 
0
foreach($data['deptIDid']['userid'] as $key=>$val) 
{ 
    if(count($val)>0) 
    { 
     if($val['bookname']=="") 
     { 
      $val['bookname']=$tamp['bookname']; 
     } 
     else if($val['return'] == "") 
     { 
       $val['return']=$tamp['return']; 
     } 
     $tamp = $val; 
     $tarray[$key] = $val; 

    } 
    else 
    { 
     $tarray[$key]=$tamp; 
    } 
} 
Смежные вопросы