Drupal 6 PHP: Foreach повторяет действие в одной строке - PullRequest
1 голос
/ 11 июля 2011

У меня есть сайт в Drupal 6, и я пытаюсь создать несколько диапазонов с разными классами для печати в моем .tpl (html).

В примере у меня есть два человека, перечисленные в их собственныхстрока.Они оба имеют два массива с разными значениями, называемыми «позициями» и «предпочтительными позициями».

Моя проблема в том, что я создал foreach, и он печатает промежутки, но он сохраняет повторение отрезков каждый раз для строки эме (в этом есть только две строки),Я не могу найти ошибку в моем коде.Пожалуйста, посмотрите, любая помощь, или палец, направленный в правильном направлении, будет оценен.

foreach ($vars['view']->result as $key => $row) {
    // preferred positions on pitch             
$outputspanpref = "";           
    foreach ($row->node_data_field_pref_position_field_pref_position_value as $key =>
        $position) {
            $keyclass = 'pref-position-' . $key; 
        $positionclass = strtolower(str_replace(" ","-",$position['value']));
            $outputspanpref .= '<span class="' . $keyclass . ' ' . "pref-position" . 
            '' . $positionclass . '"></span>';      
        $vars['prefposition'] = $outputspanpref;        
    }

    // secondary positions on pitch 

    $outputspan = "";

    foreach ($row->node_data_field_position_field_position_value as $key => 
        $position) {
            $keyclass = 'position-' . $key; 
        $positionclass = strtolower(str_replace(" ","-",$position['value']));
        $outputspan .= '<span class="' . $keyclass . ' ' . $positionclass.'
                </span>';           
        $vars['position'] = $outputspan;        
        }    
    }    
}

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Похоже, вы повторно используете $key внутри вложенных циклов foreach.Попробуйте использовать $key1, затем $key2 и т. Д. Для каждого последующего цикла.

foreach ($vars['view']->result as $key1 => $row) { // 1st forloop
foreach ($row->node_data_field_pref_position_field_pref_position_value as $key2 => $position) { // 2nd forloop
foreach ($row->node_data_field_position_field_position_value as $key3 => $position) { // 3rd forloop
0 голосов
/ 06 июня 2012

На основании вашего описания проблемы.Вероятно, вы используете одну и ту же ссылку в цикле и, следовательно, для ее исправления вы должны назначить каждой строке свою уникальную переменную.

...