2015-06-03 4 views
0

Я хочу динамически заменить значения некоторых ключей на последней итерации цикла foreach i.e. from [color] => 'grey' to [color] => 'green'.Динамически меняет значения в ассоциативном массиве

Вот фактический сценарий

<?php 
$line = "After six months, participants in both vitamin D supplementation groups had lost more weight and had greater reductions in their waistlines than those who hadn't taken the supplements, Vigna's team said"; 
// $chunks = str_split($line, 35); 
$array = explode("\n", wordwrap($line, 40, "\n")); 
// echo '<pre>' . print_r($chunks, true); 

    function splitTextString($array) 
    { 
     foreach($array as $key=>$value) 
     { 
      $linesArr{$key}['name'] = $value; 
      $linesArr{$key}['font-size'] = 27; 
      $linesArr{$key}['color'] = "grey"; 
     } 
       return $linesArr; 
    } 


    echo "<pre>"; 
    print_r(splitTextString($array)); 
    echo "</pre>"; 
?> 
+2

А где сейчас проблема? – Rizier123

+0

Хотелось бы изменить значение цвета, то есть «серый» на «зеленый» на последней итерации. – user3650185

ответ

0

Просто измените строку в последней итерации

<?php 

    $line = "After six months ..."; 
    $array = explode("\n", wordwrap($line, 40, "\n")); 

    function splitTextString($array) { 

     end($array); 
     $last = key($array); 
     reset($array); 

     foreach($array as $key=>$value) { 

      $color = $key === $last ? "green" : "grey"; 

      $linesArr{$key}['name'] = $value; 
      $linesArr{$key}['font-size'] = 27; 
      $linesArr{$key}['color'] = $color; 
     } 

     return $linesArr; 
    } 

    echo "<pre>"; 
    print_r(splitTextString($array)); 
    echo "</pre>"; 
?> 
+0

'end()' принимает массив по ссылке и устанавливает указатель массива на последний элемент. Я бы больше 'count()' массив перед циклом foreach, а затем проверял ключ, если это последний элемент. – Rizier123

+0

@ Rizier123 Хорошо, понял. – user3650185

+0

@ Rizier123 - Я могу изменить его, чтобы кэшировать последний ключ и вместо этого проверять уникальные ключи, если это делает вас счастливее? Также следует избегать проблем с дублирующимися значениями в массиве – adeneo

Смежные вопросы