2016-11-04 8 views
1

Как я могу выполнить цикл через addAttribute для ввода нескольких значений.Php Xml loop через addAttribute

До сих пор это выглядит следующим образом:

 for($i = 0; $i < 10; $i++) 
     { 
      $this->title->addAttribute('names', "'".$this->Data[$i]->names.';'); 
     } 

Я получаю эту ошибку:

SimpleXMLElement::addAttribute(): Attribute already exists

текущий XML-выглядит следующим образом (без петли, с именем статического значения):

<button names=Tim;"/> 

, но я хочу, чтобы это выглядело следующим образом:

<button names=Tim;Tom;Ted"/> 

как я могу это достичь?

ответ

0

вы можете достичь этого, необходимо сначала создать массив со всем вашим именем, а затем implode ваш массив в атрибуте Это должно работать

PHP

$names = []; 
foreach($this->Data as $key => $value) { 
    $names[] = $value->names; 
} 
$this->title->addAttribute('names', implode(';', $names)); 
0

В вашем примере кода вы пытаетесь добавить тот же атрибут. Вместо этого вы можете создать массив с именами. Затем вы можете присоединиться к элементам массива с помощью строки клея с implode.

$names = []; 

for($i = 0; $i < 10; $i++) 
{ 
    $names[] = $this->Data[$i]->names; 
} 

$this->title->addAttribute('names', implode(';',$names)); 
+1

Некоторые объяснения было бы хорошо. – Blackbam

+0

Хотя этот фрагмент кода может решить проблему, он не объясняет, почему и как он отвечает на вопрос. Пожалуйста, [укажите объяснение своего кода] (// meta.stackexchange.com/q/114762/269535), так как это действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. ** Флагеры/рецензенты: ** [Для ответов только на код, таких как этот, нисходящий, не удалять!] (// meta.stackoverflow.com/a/260413/2747593) –

+0

Я пропустил этот момент, спасибо все для предупреждения. – nejat

0

Вы не необходимо использовать addAttribute(), чтобы добавить значение атрибута существования. Только добавить новое значение атрибута, как нижний код

for($i = 0; $i < 10; $i++) 
{ 
    $this->title['names'] .= $this->Data[$i]->names.';' 
} 

Проверить результат в demo