2015-04-28 2 views
0

У меня есть пустой массив в PHP и некоторые данные, которые мне нужно вставить в этот пустой массив.Php добавить элементы в массив в определенной позиции

Для каждого типа данных я имею $data->getName(), $data->getValue() и $data->getPosition() так у меня есть:

 foreach($datas as $key => $data){ 
      array_push($myEmptyArray, array($data->getName() . ":" . $data->getValue())); 
     } 

я получаю что-то вроде этого:

[["lastname:andraud"], ["lastname:andro"], ["firstname:clement"]] 

Но мне нужно использовать ма position attribut, для что-то (если у меня есть соответственно 0-0-1 в моем положении, присвойте:

[["lastname:andraud, lastname:andro"], ["firstname:clement"]] 

Если я попробую $myEmptyArray[$data->getPosition()] У меня есть ошибка "empty array"

Спасибо за помощь!

+0

он возвращает пустой массив Потому что массив не имеет ничего в нем, и вы пытаетесь извлечь элементы из пустого массива –

+0

я хочу, чтобы добавить элемент в пустом массиве так. .. какое решение ? –

+0

Поведение, которое вы хотите, это конкатенация с помощью «,», если индекс уже установлен или идет для стиля ассоциативного массива? Вы можете вставлять элементы в любой индекс вашего массива в php, однако вам нужно выполнить «isset», если вы пропустите его через счетчик. –

ответ

0
$myEmptyArray = array(); 

foreach($datas as $key => $data){ 
    $myEmptyArray[$data->getPosition()] = array($data->getName() . ":" . $data->getValue()); 
} 

использовать пользовательские ключи вместо array_push. После этого вы можете использовать эти ключи. Для вашей ситуации кай будет позицией.

print_r($myEmptyArray[$position_id]); // get by position id 
0
$myEmptyArray = array(); 
$temp_val = ''; 
$new_val = ''; 
foreach($datas as $key => $data){ 
    if(array_key_exists ($data->getPosition() , $myEmptyArray)){ 
     $temp_val = $myEmptyArray[$data->getPosition()]; 
     $new_val = array($data->getName() . ":" . $data->getValue()); 
     $myEmptyArray[$data->getPosition()] = $temp_val.','.$new_val; 
    }else{ 
     $myEmptyArray[$data->getPosition()] = array($data->getName() . ":" . $data->getValue()); 
    } 
} 


print_r($myEmptyArray[$position_id]); 

Этот код будет сохранить запись в массиве, и он не заменит ваши ценности.

0

У меня есть решение:

foreach($values as $key => $value){ 
     $name = $value->getName(); 

     if(!isset($array[$value->getPosition()])){ 
      $array[$value->getPosition()] = array(); 
     } 

     array_push($array[$value->getPosition()], $name . ":" . $value->getValue()); 
    } 
Смежные вопросы