2013-11-22 3 views
0

Я пытаюсь прочитать файл строки за строкой и хранить значения в массиве. и если имя пользователя уже в массиве происходит, обновите существующий массив для имени пользователя, если не создайте новый массив.Обновить значения массива

$data[] = array('username1'=>array('failed-attempts'=>'0','ip'=>array('191.25.25.214'))); 

$data[] = array('username2'=>array('failed-attempts'=>'0','ip'=>array('221.25.25.214'))); 

Я пытаюсь обновить значение неудавшихся попыток и добавить newip адреса в внутрибрюшинно массив, если массив для пользователя существует.

Я попытался это

foreach($data as $d){ 
    if (array_key_exists($username, $d)) { 
      //username is already in the array, update attempts and add this new IP. 


    }else{ 

     $data[] = array('username3'=>array('failed-attempts'=>'0','ip'=>array('129.25.25.214'))); //username is new, so add a new array to $data[] 

    } 
} 

Как обновить существующий массив?

ответ

1

что-то, как это должно работать:

foreach($data as $key => $d){ 
    if (array_key_exists($username, $d)) { 
     $data[$key][$username]['ip'] = array("your_ip_value"); 
    } else { 
     ... 
    } 
} 
1
<?php 

$result = array(); 
foreach($data as $d){ 

    $ip = ''; // get the ip, maybe from $d? 
    $username = ''; // get the username 

    // if exist, update 
    if (isset($result[$username])) { 
     $info = $result[$username]; 
     $info['failed-attempts'] += 1; 
     $info['ip'][] = $ip; 

     $result[$username] = $info; 
    } else { 
     $info = array(); 
     $info['failed-attempts'] = 0; 
     $info['ip'] = array($ip); 
     $result[$username] = $info; 
    } 
} 
Смежные вопросы